POJ1006 - Biorhythms(中国剩余定理)
题目大意
略。。。有中文。。。
题解
就是解同余方程组
x≡(p-d)(mod 23)
x≡(e-d)(mod 28)
x≡(i-d)(mod 33)
最简单的中国剩余定理应用。。。。
代码:
#include<iostream> #include<cstdio> using namespace std; void gcd(int a,int b,int &d,int &x,int &y) { if(!b) { d=a,x=1,y=0; } else { gcd(b,a%b,d,y,x),y-=x*(a/b); } } int main() { int p,e,d,i,a1,a2,a3,M1,M2,M3,t=0; while(cin>>p>>e>>i>>d&&p+e+i+d>=0) { int x=0,y,q; a1=p-d,a2=e-d,a3=i-d; M1=924,M2=759,M3=644; gcd(23,M1,q,q,y),x=(x+y*M1*a1)%21252; gcd(28,M2,q,q,y),x=(x+y*M2*a2)%21252; gcd(33,M3,q,q,y),x=(x+y*M3*a3)%21252; x=(x%21252+21252)%21252,x=x?x:21252; printf("Case %d: the next triple peak occurs in %d days.\n",++t,x); } return 0; }