对CRT(中国剩余定理)不了解可以参考这篇博客这个
一道中国剩余定理的裸题
代码
//By AcerMo
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int t=1,a,b,c,d,j,emm;
int r1=33*28,r2=23*33,r3=23*28;emm=23*28*33;
for (j=1;;j++) if (j*r1%23==1) break;r1*=j;
for (j=1;;j++) if (j*r2%28==1) break;r2*=j;
for (j=1;;j++) if (j*r3%33==1) break;r3*=j;
while (~scanf("%d%d%d%d",&a,&b,&c,&d)&&a!=-1)
{
int ans=(r1*a+r2*b+r3*c-d)%emm;
ans=(ans+emm-1)%emm+1;
printf("Case %d: the next triple peak occurs in %d days.\n",t++,ans);
}
return 0;
}