poj 1006 Biorhythms 中国剩余定理
题目地址: http://poj.org/problem?id=1006
中国剩余定理的应用
#include<iostream> using namespace std; typedef long long inta; void extend_gcd(inta a,inta b,inta &x,inta &y) { if(b==0) { x=1; y=0; } else { extend_gcd(b,a%b,x,y); int temp=x; x=y; y=temp-a/b*y; } } int main() { int tag=1; inta a,b,c,d; int mod=21252; inta M[3]; M[0]=924; M[1]=759; M[2]=644; int m[3]; m[0]=23; m[1]=28; m[2]=33; int r[3]; while(cin>>a>>b>>c>>d) { if(a==-1&&b==-1&&c==-1&&d==-1) break; cout<<"Case "<<tag<<": the next triple peak occurs in "; tag++; inta ans=0; inta x,y; r[0]=a; r[1]=b; r[2]=c; for(int i=0;i<3;i++) { extend_gcd(M[i],m[i],x,y); ans+=(x*M[i]*r[i])%mod; } ans=(ans%mod+mod)%mod; while(ans<=d) ans+=mod; cout<<ans-d<<" days."<<endl; } }