模拟法
(模拟即可) $O(n * 12)$
模拟即可
C++ 代码
#include <iostream>
#include <vector>
using namespace std;
int days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int main()
{
int n;
cin >> n;
vector<int> v(7);
int t = 0;
for(int j = 0; j < n; j ++)
{
int y = 1900 + j;
for(int i = 0; i < 12; i ++)
{
v[(t + 13) % 7] ++;
if(i == 1 && (((y % 4 == 0) && (y % 100)) || y % 400 == 0)) t = (t + 29) % 7;
else t = (t + days[i]) % 7;
}
}
cout << v[6] << " " << v[0] << " " << v[1] << " " << v[2] << " " << v[3] << " " << v[4] << " " << v[5] << endl;
return 0;
}