十三号星期五(日期处理)

十三号星期五(日期处理)

十三号星期五真的很不常见吗?

每个月的十三号是星期五的频率是否比一周中的其他几天低?

请编写一个程序,计算 N 年内每个月的 13 号是星期日,星期一,星期二,星期三,星期四,星期五和星期六的频率。

测试的时间段将会开始于 1900 年 1 月 1 日,结束于 1900+N−1 年 12 月 31日。

一些有助于你解题的额外信息:

1900年 1 月 1 日是星期一。

在一年中,4 月、6 月 9 月、11 月每个月 30 天,22 月平年 2828 天

闰年 2929 天,其他月份每个月31天。

公历年份是 4 的倍数且不是 100的倍数的年份为闰年,例如 1992 年是闰年,

1990 年不是闰年。

公历年份是整百数并且是 400 的倍数的也是闰年,例如1700年,1800年,1900年

,2100年不是闰年,2000年是闰年。

输入格式

共一行,包含一个整数 N。

输出格式

共一行,包含七个整数,整数之间用一个空格隔开,依次表示星期六,星期日,星期一,星期二,星期三,星期四,星期五在十三号出现的次数。

数据范围

1≤N≤400,

输入样例:

20

输出样例:

36 33 34 33 35 35 34

#include

using namespace std;

bool leap(int year){

return year%4==0&&year%100!=0||year%400==0;

}

int d[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

int work[7];

int main(){

int n;

cin>>n;

int year=1900,month=1,day=1;

int y=year+n-1;

int cnt=1;

while(year!=y||month!=12||day!=31){

if(leap(year))d[2]=29;

else d[2]=28;

day++;

cnt++;

if(day==13){

work[cnt%7]++;

}

if(day>d[month]){

day=1;

month++;

}

if(month>12){

month=1;

year++;

}

}

cout<

for(int i=0;i<6;i++){

cout<<' '<

}

return 0;

}

相关推荐

18个宝藏小众网站,有用有趣还涨知识!
beat365正版唯一官网

18个宝藏小众网站,有用有趣还涨知识!

📅 07-04 👁️ 2610
横空出世,狼人杀为什么火了?
外勤365app下载安装

横空出世,狼人杀为什么火了?

📅 08-15 👁️ 2916
林俊傑音樂創作列表
365heart

林俊傑音樂創作列表

📅 08-18 👁️ 7618