问题描述
已知2011年11月11日是星期五,问YYYY年MM月DD日是星期几?注意考虑闰年的情况。尤其是逢百年不闰,逢400年闰的情况。
输入格式
输入只有一行
YYYY MM DD
YYYY MM DD
输出格式
输出只有一行
W
W
数据规模和约定
1599 <= YYYY <= 2999
1 <= MM <= 12
1 <= DD <= 31,且确保测试样例中YYYY年MM月DD日是一个合理日期
1 <= W <= 7,分别代表周一到周日
1 <= MM <= 12
1 <= DD <= 31,且确保测试样例中YYYY年MM月DD日是一个合理日期
1 <= W <= 7,分别代表周一到周日
样例输入
2011 11 11
样例输出
5
#include<iostream>
using namespace std;
//计算当前日期到1599年1月1日的天数
int Get_SumDay(int y,int m,int d)
{
int rt=0,i;
//计算年
for(i=1599;i<y;i++)
{
if(i%4==0&&i%100!=0||i%400==0)
{
rt += 366;
}else{
rt += 365;
}
}
//计算月
for(i=1;i<m;i++)
{
if(i==4||i==6||i==9||i==11)
{
rt+=30;
}else if(i==2){
if(y%4==0&&y%100!=0||y%400==0)
{
rt += 29;
}else{
rt += 28;
}
}else{
rt+=31;
}
}
//计算日
rt+=d-1;
return rt;
}
int main()
{
int y,m,d,a,ans;
cin>>y>>m>>d;
a=Get_SumDay(y,m,d)-Get_SumDay(2011,11,11);
if(a>=0)
{
ans=(a+5)%7;
}else{
ans=(a+5)%7;
ans=(ans+7)%7;
}
if(ans==0)ans=7;
cout<<ans<<endl;
return 0;
}