题目链接
题意
算出n年后,在13号的有多少个星期一,星期二,星期三,星期四,星期五,星期六,星期日
思路
日期题
枚举每一天,判断每一个月13号是星期几
坑点
判断平闰年
代码
#include<bits/stdc++.h>
using namespace std;
bool isleap(int year)//判断是否为闰年
{
return (year%4==0 && year%100!=0) || (year%400==0);//符合为1
}
int mouth[13][2]={{0,0},{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31}};
int main()
{
int n,week[7]={0};
cin>>n;
int d=0,dd=1,m=1,y=1900;
while(n>0)
{
d++;
if(dd==7)
{
dd=0;
}
if(d==13)
{
week[dd]++;
}
if(d==mouth[m][isleap(y)]+1)
{
m++;
d=1;
}
if(m==13)
{
y++;
m=1;
n--;
}
dd++;
}
cout<<week[6]<<" "<<week[0]<<" "<<week[1]<<" "<<week[2]<<" "<<week[3]<<" "<<week[4]<<" "<<week[5];
return 0;
}
总结
日期题,注意年月日的转换,判断平闰年