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() }