思路:
从d+1天开始,一直试到第21252 天,对其中每个日期k,看是否满足
(k – p)%23 == 0 && (k – e)%28 == 0 && (k-i)%33 == 0如何试得更快?
比起直接用if,for for 更快,k在满足第一个后,跳着加。
#include<iostream>
#define N 21252
int main(){
using namespace std;
int p, e, i, d, caseNo = 0;
int k;
while (cin >> p >>e >> i >> d){
for (k = d + 1; (k - p) % 23!=0; ++k){}
for (k; (k - e) % 28; k = k + 23){}
for (k; (k - i) % 33; k = k + 23 * 28){}
cout << "The next triplr peak occures in " << k - d << "days";
}
cin.get();
cin.get();
return 0;
}