poj1006

 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.\n",counts,ans);
24     }
25     return 0;
26 }

 

posted on 2016-08-12 10:29  wastonl  阅读(123)  评论(0编辑  收藏  举报