水题,调用蔡勒公式即可解决。(由于年份限定为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