Euler problem 19を解いた。
Problem 19 †
次の情報が与えられている。
1900年1月1日は月曜日である。
9月、4月、6月、11月は30日まであり、2月を除く他の月は31日まである。
2月は28日まであるが、うるう年のときは29日である。
うるう年は西暦が4で割り切れる年に起こる。しかし、西暦が400で割り切れず100で割り切れる年はうるう年でない。
20世紀(1901年1月1日から2000年12月31日)で月の初めが日曜日になるのは何回あるか。
ツェラーの公式を使えばいい。
なんか色々情報が付与されているけど結局閏年は関係ない。
B_Year=1901 E_Year=2000 def Date_Number(Year,Month,Days): if Month <= 2: Month+=12 Year-=1 J=Year/100 K=Year%100 return (Days + round( (Month+1)*26/10 ) + K + round(K/4) + round(J/4) - 2*J ) % 7 count=0 for Y in range(B_Year,E_Year+1): for M in range(1,12+1): if Date_Number(Y,M,1)==1: count+=1
もしくは
B_Year=1901 E_Year=2000 import datetime count=0 for Y in range(B_Year,E_Year+1): for M in range(1,12+1): dt=datetime.datetime(Y,M,1) D=dt.weekday() if D==6: count+=1