已知2011年11月11日是星期五,问YYYY年MM月DD日是星期几?注意考虑闰年的情况。尤其是逢百年不闰,逢400年闰的情况。
思路:简单翻日历,先判断y-1年 如果是闰年加366否则加365然后剩下那m个月,特判闰月其他全加,然后剩下最后一个月,直接加上所有的日期;然后%7即可,特判7,如果是0就输出7;
#include<bits/stdc++.h>
using namespace std;
int y,m,d;
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int main(){
int n=4;
cin>>y>>m>>d;
for(int i=1599;i<y;i++){
if((i%4==0&&i%100!=0)||(i%400==0)){ //判断闰年
n+=366;
}else n+=365;
}
for(int i=1;i<m;i++){
if(i==2&&(y%4==0&&y%100!=0)||(y%400==0)){ //判断闰月
n+=29;
}else{
n+=a[i];
}
}
n+=d;
n%=7;
if(n==0)cout<<7; //特判星期天的情况
else cout<<n;
return 0;
}