#include<iostream>
#include<cstring>
using namespace std;
int gcd(int a,int b,int &x,int &y)
{
if(b==0)
{
x=1;y=0;return a;
}
int g=gcd(b,a%b,y,x);
y-=x*(a/b);
return g;
}
int china(int m1,int r1,int m2,int r2)
{
int g,k1,k2;
g=gcd(m1,m2,k1,k2);
k2=-k2;
int r=((r2-r1)%m2+m2)%m2;
k1*=r/g;
k1=(k1%m2+m2)%m2;
int ans=(m1*k1+r1)%(m1*m2);
return ans;
}
int main()
{
int p,e,i,d,T;
cin>>T;
while(T--)
{
int cas=1;
while(cin>>p>>e>>i>>d)
{
if(p==-1) break;
int m=21252;
int ans=china(23,p,28*33,china(28,e,33,i));
ans-=d;
ans%=m;
while(ans<=0) ans+=m;
cout<<"Case "<<cas++<<": the next triple peak occurs in "<<ans<<" days.\n";
}
}
return 0;
}
hdu1370 中国剩余定理
最新推荐文章于 2022-10-26 20:07:04 发布