题意:
输入一个N,从1900年开始往后的N年里,每个月的13号是星期几呢?统计并输出
输入格式
共一行,包含一个整数 N。
输出格式
共一行,包含七个整数,整数之间用一个空格隔开,依次表示星期六,星期日,星期一,星期二,星期三,星期四,星期五在十三号出现的次数。
数据范围
1≤N≤400
输入样例:
20
输出样例:
36 33 34 33 35 35 34
题解:
总之就是模拟这个过程,首先维护一个变量days,用来记录距离1900年1月1日的天数。然后mod7看是周几。
代码如下:
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int mouth[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int week[7];
int main()
{
int n;
cin >> n;
int days = 0;
for(int year = 1900; year < 1900 + n; year ++)
for(int i = 1; i <= 12; i ++ )
{
week[ (days + 12) % 7 ] ++;
days += mouth[i];
if(i == 2)
{
if(year % 100 && year % 4 == 0 || year % 400 == 0)
days ++;
}
}
for(int i = 5; i < 12 ; i ++)
cout << week[i % 7] << ' ';
return 0;
}