Time Limit: 2 sec / Memory Limit: 256 MB
問題文
駆け出しプログラマーの高橋君は、バイト先の会社で、ある日付から今日の日付(2014 年 5 月 17 日)までの経過日数を計算するプログラムを作る仕事を割り当てられ、悩んでいました。 最終的に、高橋君は「ある程度簡単な計算式に落とし込めたら高速化できるに違いない。」という信念のもとにいろいろ調べることで、ネットの海を彷徨っていると以下のような驚くべき公式を見つけました。この式の計算結果は、1 年 1 月 1 日から y 年m月 d 日までの経過日数を表しているというのです。
ただしこの公式を使う際、ある年1 月と 2 月の場合についてのみは、前年の 13 月,14 月という扱いをすることとします。つまり、たとえば 2012 年 2 月 5 日の場合、y=2011,m=14,d=5 として公式を適用しなければなりません。
例えばこの公式に y=2014,m=5,d=17 を代入すると、735369 となり、1 年 1 月 1 日から2014 年 5 月 17 日までに、735369 日経過したことが分かります。
この公式を応用すれば、任意の2つの日付に対する日数差を計算することができます。 例えば、1988 年 7 月 3 日と 2014 年 5 月 17 日の日数差は、(1年1月1日から2014年5月17日までの経過日数)-(1年1月1日から1988年7月3日までの経過日数) なので、735369-725920=9449 と求まります。
残念ながら高橋君は調べるだけで疲れて切ってしまったので、同僚であるあなたが彼の代わりにプログラムを書くことになりました。要するにあなたの仕事は、ある日付から今日の日付(2014 年 5 月 17 日)までの経過日数を計算するプログラムを作ることです。
入力
入力は以下の形式で標準入力から与えられる。
y m d
- 1 行目には、y (1 ≦ y ≦ 2014) が与えられる。
- 2 行目には、m (1 ≦ m ≦ 12) が与えられる。
- 3 行目には、d (1 ≦ d ≦ 31) が与えられる。
- 与えられる日付は2014年5月17日よりも前のものである。また、実際に存在しない日付は与えられない。つまり、m=4,6,9,11 のとき 1≦d≦30 であり、m=1,3,5,7,8,10,12 のとき 1≦d≦31 を満たす。残る m=2 については、y 年が閏年( yが 400 の倍数、もしくは y が 100 の倍数ではない 4 の倍数)であれば 1≦d≦29、閏年でなければ 1≦d≦28 を満たす。
出力
y 年 m 月 d 日から 2014 年 5 月 17 日までに経過した日数を一行に出力せよ。
入力例1
1988 7 3
出力例1
9449
問題文の例です。1988 年 7 月 3 日から 2014 年 5 月 17 日までに9449日経過しています。
入力例2
1 1 1
出力例2
735369
公式では、1 月と 2 月はそれぞれ前年(y-1 年)の 13 月と 14 月として扱わなければならないことに注意してください。
入力例3
2014 5 16
出力例3
1
入力例4
2012 2 29
出力例4
808
2012 年 2 月 29 日は閏日です。