实例:
1965 1 1
2013 12 18
2010 2 1
1999 7 24
2008 1 13
一刷:
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
int judge(int n){
if((n%4==0&&n%100!=0)||n%400==0)
return 1;
return 0;
}
int day(int y,int m,int d){
int sum=0;
int mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
for(int i=1965;i<y;i++){
if(judge(i))
sum+=366;
else
sum+=365;
}
for(int i=1;i<m;i++){
if(judge(y)&&i==2)
sum+=29;
else
sum+=mon[i];
}
sum+=d-1;
printf("sum=%d\n",sum);
return sum;
}
int main(){
int y,m,d;
while(cin>>y>>m>>d){
if(y==0&&m==0&&d==0)
break;
int sum=day(y,m,d);
printf("n=%d\n",(sum+4)%7+1);
}
return 0;
}
二刷:
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
bool judge(int n){
if((n%100!=0&&n%4==0)||n%400==0)
return 1;
return 0;
}
int main(){
int y,m,d;
int mdays[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
while(cin>>y>>m>>d){
if(y==0&&m==0&&d==0)
break;
int s=0;
for(int i=1965;i<y;i++){
if(judge(i))
s+=366;
else
s+=365;
}
for(int i=1;i<m;i++){
s+=mdays[i];
if(i==2&&judge(y)==1)
s++;
}
s+=d;
cout<<(s+3)%7+1<<endl;
}
return 0;
}