3个周期 23,28,33分别代表3个人体不同部位最牛逼的时间周期;比如28代表girl的生理周期;23,33一样,问每次输入三个高峰期的日子,p,e,i,然后再输入d,d是给定的日子,输出从给定的日子起下一次三个高峰出现同一个日子的天数。天数最多21252天。输入-1时结束循环。
分析:从d+1天开始,一直到21252天,对其中每个日期k看是否满足(k-p)%23==0 &&(k-e)%28==0 && (k-i) %33==0;
代码:
#include<iostream>
#include<cmath>
using namespace std;
#define N 21252 //最大天数
int main()
{
int p, e, i, d, caseNo=0;
while (cin >> p >> e >> i >> d && p!=-1) {
caseNo++;
int k;
for (k = d + 1; (k - p) % 23; ++k); //条件为0时循环终止,进入下一循环
for (; (k - p) % 28; k += 23);
for (; (k - p) % 33; k += 23 * 28);
cout << "case " << caseNo << ":the next triple peak occurs in " << k - d << "day" << endl;
}
system("pause");
return 0;
}
运行实例: