AcWing 1341. 十三号星期五
原题链接
简单
作者:
我是真的菜呀
,
2021-01-20 16:54:27
,
所有人可见
,
阅读 313
C++ 代码
#include<iostream>
#include<map>
#include<vector>
using namespace std;
int main()
{
// 存放每个月13号到月底的天数,二月做特殊处理
vector<int> month{0, 18, 15, 18, 17, 18, 17, 18, 18, 17, 18, 17, 18};
map<int, int> hashtable; // 用来存放13号是周一、二、、、的天数
int amount = 0, N; // 从1900.1.1到指定日期的天数
cin >> N;
for (int year = 1900; year <= 1900 + N - 1; year++) {
for (int i = 1; i < month.size(); i++) {
amount += month[i-1] + 13;
// 如果是闰年的二月份,则在二月份到月底的差值的基础上+1
if (i == 3 && ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)) amount += 1;
hashtable[amount % 7]++;
}
amount += month[12]; // 在加上12.13到月底的天数
}
cout << amount << endl;
for (int i = 6, cnt = 1; cnt <= 7; i = (i + 1) % 7, cnt++) {
cout << hashtable[i] << ' ';
}
cout << endl;
return 0;
}