AcWing 1341. 十三号星期五
原题链接
简单
作者:
尼古拉斯小布丁
,
2021-03-22 12:41:17
,
所有人可见
,
阅读 306
模拟法枚举
#include<iostream>
using namespace std;
int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //打表记录每个月的天数
int weekday[7]; //0对应周一
int n;
int main(){
cin>>n;
int days=0; //记录每个月的13号记录1900年1月1号过去了多少天
for(int year=1900; year<1900+n; year++){ //外层循环枚举年
for(int i=1;i<=12;i++) {//内层循环枚举月
weekday[(days+12) % 7]++;
days += month[i]; //计算完后加上本月天数
if(i == 2){ //如果是闰年的2月就多加一天
if((year % 100!=0 && year % 4==0)|| (year % 400==0 && year%100==0)) days++;
}
}
}
for(int i=5,j=0;j<7;i=(i+1)%7,j++){
cout<<weekday[i]<<" ";
}
return 0;
}