#include<stdio.h> int leap(int a) { if(a%400==0||(a%4==0&&a%100!=0)) return 366; else return 365; } int day(int a,int b) { if(b==1||b==3||b==5||b==7||b==8||b==10||b==12) return 31; else if(b==4||b==6||b==9||b==11) return 30; else { if(leap(a)==366) return 29; else return 28; } } int nian(int a) { int i; int sum=0; if(a==2011) { return sum; } else if(a<2011) { for(i=a+1;i<2011;i++) sum+=leap(i); return sum; } else if(a>2011) { for(i=2012;i<a;i++) sum+=leap(i); return sum; } } int yue(int a,int b,int c,int d) { int i,j; int sum=0; for(i=b+1;i<13;i++) sum+=day(a,i); for(i=1;i<d;i++) sum+=day(c,i); return sum; } int answer(int a) { if(a==5) return 5; else if(a==6||a==-1) return 6; else if(a==7||a==0) return 7; else if(a==8||a==1) return 1; else if(a==9||a==2) return 2; else if(a==10||a==3) return 3; else if(a==11||a==4) return 4; } int main() { int a,b,c; int sum; int chaa,chab,chac; int i,j,k; while(scanf("%d%d%d",&a,&b,&c)!=EOF) { sum=0; sum+=nian(a); if(a<2011) { sum+=yue(a,b,2011,11); sum+=(day(a,b)-c+11); } else if(a>2011) { sum+=yue(2011,11,a,b); sum+=(day(2011,11)-11+c); } else { sum+=yue(2011,12,2011,11); sum+=11; } sum%=7; if(a>2011) sum+=5; else if(a<2011) sum=5-sum; else { if(b<11) sum=5-sum; else if(b>11) sum+=5; else { if(c>11) sum+=5; else if(c<11) sum=5-sum; else sum=5; } } printf("%d\n",answer(sum)); } return 0; }
原文:http://blog.csdn.net/wangluoershixiong/article/details/43818317