2011-03-24
PKU 2080 Calendar
http://poj.org/problem?id=2080
2000年1月1日からの日数が入力されるので、年月日に変換してついでに曜日も表示する。
面倒くさい日付計算をあまりしたくなかったので、最初localtimeとか使おうとしたのですが、REが出てうまくいかなかったり、2038年問題に直面して9999年とかが出なかったりしたので、以下の方針に転換。
intだとMLEだったので、shortにしたら通った。よかった。
char youbi[][10]={"Sunday","Monday","Tuesday", "Wednesday","Thursday","Friday","Saturday"}; int mon[]={31,29,31,30,31,30,31,31,30,31,30,31}; short year[4000000],month[4000000],day[4000000]; main(){ int y=2000,m=1,d=1; rep(i,4000000){ year[i]=y; month[i]=m; day[i]=d; if(m==12 && d==31){ y++; m=1; d=1; if((y%4==0 && y%100!=0) || y%400==0)mon[1]=29; else mon[1]=28; continue; } if(d==mon[m-1]){ ++m; d=0; } ++d; } ll n; while(cin>>n,~n) printf("%d-%02d-%02d %s\n",year[n],month[n],day[n],youbi[(n+6)%7]); }
トラックバック - http://d.hatena.ne.jp/atetubou/20110324/1300943742
リンク元
- 9 http://search.minakoe.jp/rsss/rsss.asp?pgsz=100&qry=java¬wit=1&twit=0&debug=1&multi=1
- 1 http://d.hatena.ne.jp/diarylist?of=50&mode=rss&type=public
- 1 http://d.hatena.ne.jp/iorate/20110323/1300896879
- 1 http://www.google.co.jp/search?hl=ja&client=firefox-a&hs=QZ4&rls=org.mozilla:ja:official&q=A+multiplication+game+pku&aq=f&aqi=&aql=&oq=
- 1 http://www.google.co.jp/search?hl=ja&safe=off&biw=1366&bih=585&sa=X&ei=XMmKTcwkydBxtpfNgQo&ved=0CBcQBSgA&q=atetubou+??????&spell=1