1731

http://acm.pku.edu.cn/JudgeOnline/problemstatus?problem_id=1731&orderby=clen&language=-1
98Bをとりあえず取れたー。
id:Ozy:20061209での予想通り、マクロは使ってません。



まず、a+strlen(a)の代わりにstrchr(a,0)を使いましょう。
後者には前者と大きな違いがあります。
それは引数です。後者は0という比較的生成しやすい定数を関数に渡しています。
つまり、引数に0になる式を埋め込めば0を書かずに済むので1byteお得です。


そして、ショートコードの基本テクニックとして、
gcc(mingw)のputsは帰り値が0というのがあります。
つまりstrchr(a,puts(a))を使えば良いのですよ!!

ちなみにこれを素直に使うと長くなるので後は二つのループをフラグで合成しましょう

#import<algo.h>
char c,a[9];
main(){
	for(gets(a);
		next_permutation(a,
			strchr(a,c&&puts(a)))||!c++
		;);
}

注意点としてはcとaの順番を逆にしてはいけません。
バッファが微妙に溢れているのでaの後ろに置くと巻き添えをくらいます。