AcWing 1341. 十三号星期五
原题链接
简单
作者:
CarpeDime
,
2021-01-20 22:15:53
,
所有人可见
,
阅读 287
C++ 代码
#include <cstdio>
// 打表,把每个月的天数列出来
int month[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
// 记录每个月13号出现的次数
int weekday[7];
int main() {
int n;
scanf("%d", &n);
int day = 0;
for (int year = 1900; year < 1900 + n; ++ year) {
// 对月循环
for (int i = 1; i <= 12; ++ i) {
// 由于day从0开始计算所以每个月的13号就在源基础上加上12然后mod上7就可以知道星期几了
weekday[(day + 12) % 7] ++;
day += month[i];
// 确定2月是否为闰月
if (i == 2) {
if (year % 100 && year % 4 == 0 || year % 400 == 0) {
day ++;
}
}
}
}
for (int i = 5, j = 0; j < 7; i = (i + 1) % 7, ++ j) {
printf("%d ", weekday[i]);
}
return 0;
}