据说要用中国剩余定理,反正我是直接暴力枚举的。。注意本题测试数据超多,要先对给的前3个date做取余操作,不能直接在上面加,否则WA,反正有比较阴的数据,我最后没办法只能把30个文件全写出来diff一下才知道挂在某一个case上了。。可以注意下这个case:114 162 154 15 答案是7
#include<stdio.h>
int main()
{
int N, t, p, e, i, d;
scanf("%d", &N);
for (t = 0; t < N; t++)
{
if (t)
putchar('\n');
int count = 0;
while (scanf("%d %d %d %d", &p, &e, &i, &d), p != -1)
{
int n = 0, temp;
p %= 23;
e %= 28;
i %= 33;
while (1)
{
temp = i + n * 33;
if (temp >= p && (temp - p) % 23 == 0 && temp >= e
&& (temp - e) % 28 == 0 && temp > d)
{
printf("Case %d: the next triple peak occurs in %d days.\n",
++count, temp - d);
break;
}
n++;
}
}
}
return 0;
}