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
ツェラーの公式を使ってます。