标签:
| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 118302 | Accepted: 37136 |
Description
Input
Output
Sample Input
0 0 0 0 0 0 0 100 5 20 34 325 4 5 6 7 283 102 23 320 203 301 203 40 -1 -1 -1 -1
Sample Output
Case 1: the next triple peak occurs in 21252 days. Case 2: the next triple peak occurs in 21152 days. Case 3: the next triple peak occurs in 19575 days. Case 4: the next triple peak occurs in 16994 days. Case 5: the next triple peak occurs in 8910 days. Case 6: the next triple peak occurs in 10789 days.
思路:
易列出同余方程组:
X ≡ p(mod 23)
X ≡ e(mod 28)
X ≡ i (mod 33)
因为23,28,33互素,所以用中国剩余定理结论:解为sigma(ri*Mi*Mi-1)
//148K 47MS C++ 716B
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int r[4];
int m[4]={0,23,28,33};
int M=m[1]*m[2]*m[3];
int x,y;
int e_gcd(int a,int b,int&x,int &y)
{
int ans;
if(b==0) ans=a,x=1,y=0;
else ans=e_gcd(b,a%b,y,x),y-=(a/b)*x;
return ans;
}
int main()
{
int d;
int cas=0;
while(scanf("%d%d%d%d",&r[1],&r[2],&r[3],&d),~d)
{
cas++;
int ans=0;
for(int i=1;i<=3;i++)
{
int a=M/m[i];
e_gcd(a,m[i],x,y);
ans+=a*x*r[i];
}
printf("Case %d: the next triple peak occurs in %d days.\n",cas,((ans-d)%M+M-1)%M+1);
}
return 0;
}
标签:
原文地址:http://blog.csdn.net/kalilili/article/details/44938069