水题,调用蔡勒公式即可解决。(由于年份限定为2001,所以模拟似也可以解决)
注意判定数据的合法性。
另外,根据题目要求,出现负数或零的数据也是符合题目条件的,但似乎SGU并没有这么做- -
#include "stdio.h" int main(){ int maxday[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int Y=1,C=20; int M,D,day; scanf("%d%d",&D,&M); if(M>=13){ printf("Impossible"); } else{ if(D>maxday[M]){ printf("Impossible"); } else{ if((D<=0)||(M<=0)){ printf("Impossible"); } else{ if(M<=2){ Y--; M+=12; } day=((Y+Y/4+C/4-2*C+(13*(M+1)/5)+D-1)+7000000)%7; if(day==0)day=7; printf("%d",day); } } } return 0; }
原文:http://www.cnblogs.com/lostwinder/p/3880584.html