カメヲラボ

主にプログラミングとお勉強全般について書いてます

お久しぶりの最短コード75B

計算方法は皆同じような形に落ち着くとして、最後の問題はgets()を省略できるかどうか。これはmainの引数を利用すれば通すことができる。まずこのコードを見てほしい。


main(n,v,w){
for(;~scanf("%d",&w);v>0|n||printf("%d\n",1-v))
v=!n--?n=w:v-w;
}


nの初期値は1、vはポインタということで大きな値が入っている。nをカウンタとして利用すれば一つ目の入力値はコンセントの一つとみなせる上vの初期値が巨大な数のため、最初だけ答えが負になってしまう。これをうまく利用すればgets()は省略できるのだ!