题目描述
解题思路
枚举month和day即可.
参考代码
#include <stdio.h>
int day[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};
int gcd(int a,int b){
if (a < b) return gcd(b,a);
else if (b == 0) return a;
else return gcd(b,a%b);
}
int lcm(int a,int b){
return a*b/gcd(a,b);
}
int leap(int year){
if ((year%4 == 0 && year%100 != 0) || year%400 == 0)
return 1;
return 0;
}
int main()
{
int T;
while (~scanf("%d",&T)){
for (int t = 1;t <= T;t++){
int a,b,yy;
scanf("%d %d %d",&a,&b,&yy);
int d = leap(yy);
int flag = 0;
int mm,dd;
for (int i = 1;i <= 12;i++)
for (int j = 1;j <= day[d][i-1];j++)
if (gcd(i,j) == a && lcm(i,j) == b){
flag ++;
mm = i;
dd = j;
}
if (!flag) printf("Case #%d: -1\n",t);
else if (flag == 1) printf("Case #%d: %04d/%02d/%02d\n",t,yy,mm,dd);
else printf("Case #%d: 1\n",t);
}
}
return 0;
}