可以水一下~~~
两个while循环:先判断p的周期时间,若不满足则d+=1;继续循环,满足后与e和i的周期时间相比较,若不满足则d+=23;继续循环,满足后即为答案。
注:开始前d要先加一,因为算的是下一次重合的时间!
源代码如下:
#include<stdio.h>
#include"iostream"
using namespace std;
int ts(int p,int e,int i,int d)
{
int k=0;
k=d;d++;
while((d-p)%23)
{
d++;
}
while((d-e)%28!=0||(d-i)%33!=0)
{
d+=23;
}
return (d-k);
}
int main()
{
int p,e,i,d,a=0;
while(cin>>p>>e>>i>>d&&p!=-1&&e!=-1&&i!=-1&&d!=-1)
{
a++;
cout<<"Case "<<a<<": the next triple peak occurs in "<<ts(p,e,i,d)<<" days."<<endl;
}
return 0;
}