Problem Description
小明對生日十分看重,因為他可以得到祝福,可以和朋友親人一起分享快樂,可以為自己的人生做一次總結,並且...能夠收到好多禮物!
不過小明是個神秘的人,不會輕易告訴你他的生日,現在他想到一個辦法,讓你去猜他的生日是哪一天。
不過小明是個神秘的人,不會輕易告訴你他的生日,現在他想到一個辦法,讓你去猜他的生日是哪一天。
小明會告訴你如下三個信息:
1. 出生月份和出生日子的最大公約數;
2. 出生月份和出生日子的最小公倍數;
3. 出生年份;
現在要求你猜出小明的生日。
Input
第一行輸入一個正整數T,表示總共有T組冊數數據(T <= 200);
對於每組數據依次輸入三個數x,y,z,
x表示出生月份和出生日子的最大公約數(1<= x <=1000);
y表示出生月份和出生日子的最小公倍數(1<= y <=1000);
z表示出生年份(1900 <= z <= 2013)。
每組輸入數據佔一行。
對於每組數據依次輸入三個數x,y,z,
x表示出生月份和出生日子的最大公約數(1<= x <=1000);
y表示出生月份和出生日子的最小公倍數(1<= y <=1000);
z表示出生年份(1900 <= z <= 2013)。
每組輸入數據佔一行。
Output
對於每組數據,先輸出Case數。
如果答案不存在 ,輸出「-1」;
如果答案存在但不唯一 ,輸出「1」;
如果答案唯一,輸出生日,日期格式為YYYY/MM/DD;
每組輸出佔一行,具體輸出格式參見樣例。
如果答案不存在 ,輸出「-1」;
如果答案存在但不唯一 ,輸出「1」;
如果答案唯一,輸出生日,日期格式為YYYY/MM/DD;
每組輸出佔一行,具體輸出格式參見樣例。
Sample Input
3 12 24 1992 3 70 1999 9 18 1999
Sample Output
Case #1: 1992/12/24 Case #2: -1 Case #3: 1999/09/18
#include<stdio.h> int maxyue(int a,int b)//求最大公約數 { int t; while(a) { t=a; a=b%a; b=t; } return b; } int main() { int t,j,i,m,d,day[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int year,y,x,k=0,s,xx,yy; scanf("%d",&t); while(t--) { s=0; scanf("%d%d%d",&x,&y,&year); if(year%4==0&&year%100!=0||year%400==0) day[2]=29; else day[2]=28; for(i=x;i<=12;i++) for(j=x;j<=day[i];j++) { xx=maxyue(i,j); yy=j*i/xx; if(xx==x&&yy==y) { //printf("%d %d\n",i,j); m=i;d=j;s++; } } k++; if(s==1) printf("Case #%d: %d/%02d/%02d\n",k,year,m,d); else if(s>1) printf("Case #%d: 1\n",k); else printf("Case #%d: -1\n",k); } }