メモ

yukicoderでゆるふわgolf

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

問題はこち
No.522 Make Test Cases(テストケースを作る) - yukicoder

a,b,cの三重ループでやると間に合わないという罠がある
a,bを決めればcが自動的に決まるので二重ループで書ける
似たような話は前にNo.250 atetubouのzetubou - yukicoderの問題文で見た

a,b,c,n;
main(){
	scanf("%d",&n);
	for(a=1;a<n;a++)for(b=a;b<n;b++){
		c=n-a-b;
		if(c>=b)printf("%d %d %d\n",a,b,c);
	}
}

2つ目のループの継続条件をn-a-b>=bにすると、c>=bかどうかの分岐が不要になる
ということでループ圧縮などをささっと

i,j;main(n){for(scanf("%d",&n);i<n;i++)for(j=i;n-i-j>=j;j++)printf("%d %d %d\n",i,j,n-i-j);}
i,j;main(n){for(scanf("%d",&n);j=++i%n;)for(;n-i-j>=j;)printf("%d %d %d\n",i,j++,n-i-j);}
n,j;main(i){for(j=scanf("%d",&n);n-i-j>=j?printf("%d %d %d\n",i,j++,n-i-j):(j=++i%n););}
n,j;main(i){for(j=scanf("%d",&n);n-i-j<j?j=++i%n:printf("%d %d %d\n",i,j++,n-i-j););}

85B