1 Jan 1900 was a Monday.
Thirty days has September,April, June and November.All the rest have thirty-one,Saving February alone,Which has twenty-eight, rain or shine.And on leap years, twenty-nine.
A leap year occurs on any year evenly divisible by 4, but not on a century unless it is divisible by 400.
How many Sundays fell on the first of the month during the twentieth century (1 Jan 1901 to 31 Dec 2000)?
您将获得以下信息,但您可以为自己做一些研究。
1900年1月1日是星期一。
三十天有九月,四月,六月和十一月。其他月份都有三十一天,仅二月,其中二十八天。在闰年,二十九天。
闰年发生在任何一年,可被4整除,但除非可被400整除,否则不会在一个世纪上。
在二十世纪的第一个月(1901年1月1日至2000年12月31日),每月第一天有多少个星期日?
思路
蔡勒公式
w = (d + m * 2 + 3 * (m + 1) / 5 + y + y / 4 - y / 100) % 7
w是星期几(0~6)
y,m,d表示年月日
m=1或2时要对应到上一年的13月和14月
#include <stdio.h>
int week(int y, int m, int d){
if(m == 1 || m == 2){
y--;
m += 12;
}
int w = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 + y / 400) % 7;
return w;
}
int main(){
int sunday = 0;
for(int y = 1901; y <= 2000; y++){
for(int m = 1; m <= 12; m++){
if(week(y, m, 1) == 6){ sunday++;}
}
}
printf("%d\n", sunday);
return 0;
}