Fibonacci
http://acm.pku.edu.cn/JudgeOnline/problem?id=3070
入力Nに対して、フィボナッチ数列のN項目の下4桁を表示しなちゃい、という問題。ゴルフでrubyばっかり使っていたせいでセミコロンを忘れまくる。対策としては、セミコロンが少なくて済むように短く書く(笑)
というわけで、とりあえず書いてみた95B
a; main(b,t,n){ for(;b=scanf("%d",&n),~n;a=!printf("%d\n",a)) for(;n--%15000;a=b,b=t%10000)t=a+b; }
forは1回の方が短いのか、試してないので知らないです。ポイントは、下4桁の場合15000項で一周期というところでしょうか。事前に計算しておかなくても、TLEにはなりませんでした。
計算部分がもうちょっと賢い方法ありそうなかんじですね。
追記:
kurimuraさんのアドバイスを参考に、91Bで仕上げました。
main(a,b,n){ for(;b=scanf("%d",&n),~n;printf("%d\n",a)) for(a=0;n--%'u0';a=(b-a)%10000)b+=a; }