20世紀(1901年1月1日から2000年12月31日)で月の初めが日曜日になるのは何回あるか。
#include <stdio.h> int Zeller(int pSY,int pM,int pD); void main() { int cnt = 0; for(int SY=1901;SY<=2000;SY++){ for(int M=1;M<=12;M++){ int Week = Zeller(SY,M,1); if (Week == 0) printf("%d回目 %4d-%02d-%02d\n",++cnt,SY,M,1); } } } int Zeller(int pY,int pM,int pD) { if (pM <= 2){ pM+=12; pY--; } return (pY+pY/4-pY/100+pY/400+(13*pM+8)/5+pD)%7; }
省略 166回目 1997-06-01 167回目 1998-02-01 168回目 1998-03-01 169回目 1998-11-01 170回目 1999-08-01 171回目 2000-10-01
ツェラーの公式を使ってます。