カメヲラボ

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

Sum of Factorials(4)

最短コード96B

前回のコードをさらに削ると最終的に97バイトのコードが出来る。
追記を参照してチョ(`ω´)


main(n,i,k){
for(;-scanf("%d",&n)<n;puts(n?"NO":"YES"))
for(i=9,k=362880;(n-=n<k?!n:k)*i;)k/=i--;
}

n>=0とすると、ショートコーダーとしては"="がとても気になる。ここはscanfの戻り値が1であることを利用すれば良いだろう。n=0の時に1を引く処理は、二つ目のfループ内にまとめて書いておくことにする。


これで完成!(`ω´)


追記:
ロベールさんによるともう1バイト縮むようなので、修正しときました。どうもありがちょ〜>ロベールさん