hdu1370互质的中国剩余问题模版
最恨这种怪里怪气的输入输出了。。尼玛前面非得加个cin>>c。wa爆了也想不出啊。。
#include<iostream> using namespace std; const int MAXM=12; typedef long long int llint; llint a[]={23,28,33}; int exgcd(int a, int b, int &x, int &y) { if(b == 0){ x = 1, y = 0; return a;} int r = exgcd(b, a % b, x, y); int tmp = x; x = y; y = tmp - a/b * y; return r; } long long int lcm(long long int a,long long int b) { int x,y; return (a*b)/(exgcd(a,b,x,y)); } llint crr(llint a[],llint b[],int n,llint &mt)//x%a=b { //llint mt; mt=1; int i=0; for(i=0;i<=n-1;i++) { mt=lcm(mt,a[i]); } llint result=0; for(i=0;i<=n-1;i++) { llint mi=mt/a[i]; int x,y; exgcd(mi,a[i],x,y); result=(result+mi*x*b[i]+mt)%mt; } return (result+mt)%mt; } int main() { llint b[3],d; int c; cin>>c; while(cin>>b[0]>>b[1]>>b[2]>>d) { if(b[0]==-1&&b[1]==-1&&b[2]==-1&&d==-1) { break; } llint mt; int r=crr(a,b,3,mt)-d; if(r<=0) { r+=mt; } cout<<"Case "<<c++<<": the next triple peak occurs in "<<r<<" days."<<endl; } return 0; }
本博客(http://www.cnblogs.com/cj695/)未标明转载的内容均为本站原创,非商业用途转载时请署名(77695)并注明来源(http://www.cnblogs.com/cj695/)。商业用途请联系作者(77695) QQ:646710030。作者(77695)保留本博客所有内容的一切权利。
独立博客:http://nfeng.cc/
独立博客:http://nfeng.cc/