思路
① 从1990年1月1号开始累积天数
② 天数对7取余数,1-星期一,2-星期二,……,6-星期六,0-星期日
代码
#include<cstdio>
#include<cstring>
using namespace std;
int week[7];
int main(){
int n, days;
while(scanf("%d", &n)!=EOF){
days = 0;
memset(week, 0, sizeof(week));
for(int i=1900; i<1900+n; i++){
for(int j=1; j<=12; j++){
days += 13; //跳转到本月13号
week[days%7]++;
//补全本月剩余天数
if(j==4 || j==6 || j==9 || j==11)
days += 17;
else if(j==2){
if((i%4==0 && i%100!=0) || i%400==0)
days += 16;
else
days += 15;
}else
days+=18;
}
}
printf("%d %d %d %d %d %d %d\n", week[6], week[0], week[1], week[2], week[3], week[4], week[5]);
}
return 0;
}