http://poj.org/problem?id=1006
题意是:给出p,e,i,d,求出使(n+d)%23=p,(n+d)%28=e,(n+d)%33=i的n。
中国剩余定理:用于求出使n%x=a,n%y=b,n%z=c的n。
公式:n=A*a+B*b+C*c
A为y,z的公倍数,且除以x余1的最小数。
B为x,z的公倍数,且除以y余1的最小数。
C为x,y的公倍数,且除以z余1的最小数。
ps:1. 如果 a%b=c,则 (a+kb)%b=c (k为非零整数)。
2. 如果 a%b=c,则 (a*k)%b=kc (k为大于零的整数)。
参考:http://www.cnblogs.com/walker01/archive/2010/01/23/1654880.html
http://blog.youkuaiyun.com/lyy289065406/article/details/6648551
152K 47MS
#include <iostream>
using namespace std;
int main(){
int n,p,e,i,d;
int x,k=0;
while(scanf("%d%d%d%d",&p,&e,&i,&d)!=EOF&&(p!=-1&&e!=-1&&i!=-1&&d!=-1)){
x=5544*p+14421*e+1288*i;
n=(x%21252-d+21252)%21252;
if(n==0) n=21252;
printf("Case %d: the next triple peak occurs in %d days.\n",++k,n);
}
return 0;
}