2012年6月25日月曜日

久々にあなごる

590. Time Arithmetic
HMS表記の足し算。

s[];main(u,t){char*l;for(;l=gets(s);strftime(l+2,l,"=%T",gmtime(&t)),puts(s))for(t=0;u=u/60?:3600,t+=atoi(l)*u,l[2];l+=3);}

最初はscanfで一気に取れないかとか、手動で時間表記に戻そうかと思ったけど
atoiでとって手動で秒単位に変換するのが一番短いと思った。

あとは最後のHMSへの変換だけど、うまい関数を見つけた。
・・・と思ったらもっといいのをうまく使う方法があった。( nu(kou) )
もう縮まらないと思ったのになぁ。

600. Regular polygon
正多角形の座標表示。

_Complex z;i;main(n){for(scanf("%d",&n);i<n;vprintf("%.f %.f\n",&z))z=1e3*cexp(6.28318i*i++/n)+.01;}

円周率を2回書くのが馬鹿らしかったので、一回ですむ方法を考えているうちに複素数が
すでにサポートされていることに気がついた。
最終的に-0から符号を取る方法を考えに考えた末、+0.01に落ち着いた。
100BYTEが多かったのでみんな似たようなものかな、と思ってたら複素数解は僕だけだったw

603. Digital root 
604. Digital root Fixed

数字根 - Wikipediaを求める問題。



Fixedが出てはいるものの、別に元の問題でもよかったんじゃないかなと。
見たときにはFixedがあったのでそちらからやりましたが^^;;