经典的枚举优化问题
//poj4148生理周期
#include <iostream>
#include<cstdio>
using namespace std;
int main()
{
int p, e, i, d, index = 1;
scanf("%d%d%d%d",&p,&e,&i,&d);
while(p!=-1 && e!=-1 && i!=-1 && d!=-1){
int st = d+1; //表示开始的天数
//核心算法
//先从找到体力高峰开始,每找到一个高峰迭代的大小就变为周期之积
for(; st < 21252; st++)
if((st-p)%23 == 0)
break;
for(; st < 21252; st+=23)
if((st-e)%28 == 0)
break;
for(; st <21252; st+=23*28)
if((st-i)%33 == 0)
break;
printf("Case %d: the next triple peak occurs in %d days.\n",index, st-d);
index++;
scanf("%d%d%d%d",&p,&e,&i,&d);
}
return 0;
}