はまやんはまやんはまやん

hamayanhamayan's blog

Make Test Cases(テストケースを作る) [yukicoder No.522]

http://yukicoder.me/problems/no/522

解説

http://yukicoder.me/submissions/177351
a,b,cを全てループする3重ループだとO(N^3)で間に合わない
しかし、a,bが決まればcは一意に決まるため、全探索するのはa,bだけでいい。
cはN-(a+b)で求めることができ、a≦b≦cの関係が保たれていれば出力する。

var sc = FastScanner()
var pw = PrintWriter(System.out)
fun main(args: Array<String>) {
    var N = sc.nextInt()

    for(a in 1..N) for(b in a..N) {
        var c = N - (a + b)
        if(c < b) continue
        pw.println("${a} ${b} ${c}")
    }
    pw.flush()
}