1 #include <iostream> 2 #include<cstdio> 3 using namespace std; 4 5 int main() 6 { 7 int p,e,i,d,n,counts = 0,ans; 8 //(x+d)%23=p,(x+d)%28=e,(x+d)%33=i,使用中国剩余定理 9 //因为23,28,33,可直接使用定理,令x+d=n 10 // 使 33 * 28 * a % 23 = 1,得a = 6; 33 * 28 * 6 = 5544; 11 // 使23 * 33 * b % 28 = 1, 得b = 19;23 * 33 * 19 = 14421; 12 // 使23 * 28 * c % 33 = 1, 得c = 2; 23 * 28 * 2 = 1288。 13 // 那么n = 5544 * p + 14421 * e + 1288 * i 14 while(scanf("%d%d%d%d",&p,&e,&i,&d)!=EOF) 15 { 16 counts++; 17 if(p==-1) 18 break; 19 n = ((5544*p+14421*e+1288*i)%21252+21252)%21252;//防止出现负数 20 ans = n-d;//(正数) 21 if(ans<=0) 22 ans+=21252; 23 printf("Case %d: the next triple peak occurs in %d days. ",counts,ans); 24 } 25 return 0; 26 }