欧拉计划第19题
作者:
brivia
,
2024-02-25 14:32:56
,
所有人可见
,
阅读 38
/*
欧拉计划第19题, 统计1901/1/1 至 2000/12/31 期间有多少个星期日落在了 1号。
注意一个事实, 1900/1/1 是星期一。
*/
#include<bits/stdc++.h>
using namespace std;
int days_per_month[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int isloop(int year)
{
if (year % 400 == 0) return 1;
if (year % 100 == 0) return 0;
if (year % 4 == 0) return 1;
return 0;
}
int main(void)
{
int days = 0;
int ans = 0;
for (int y = 1900; y <= 2000; ++ y)
for (int m = 1; m <= 12; ++ m)
for (int d = 1; d <= days_per_month[m] + isloop(y) * (m == 2); ++ d)
{
days ++;
if (y >= 1901 && days % 7 == 0 && d == 1)
{
ans ++;
}
}
cout << ans << endl;
return 0;
}