/* 爱因斯坦台阶问题:
有人走一台阶,若以每步走2级则最后剩1级; x % 2 = 1;
若每步走3级则最后剩2级; x % 3 = 2;
若以每步走4级则最后剩3级; x % 4 = 3;
若以每步走5级则最后剩4级; x % 5 = 4; -> x % 119 = 0(解同余方程组)
若以每步走6级则最后剩5级; x % 6 = 5;
若以每步走7级则最后刚好不剩。问台阶共有几级? x % 7 = 0;
*/
#include <iostream>
#include <ctime>
void ImprovedExhaustiveMethod();
int main() {
ImprovedExhaustiveMethod();
return 0;
}
void ImprovedExhaustiveMethod() {
//clock_t startTime, endTime;
//double duration;
//startTime = clock();
for (int i = 7; ; i += 14) {
if ( i % 3 == 2 && i % 4 == 3 && i % 5 == 4 && i % 6 == 5) {
std::cout << i << std::endl;
break;
}
}
//可以根据中国剩余定理(Chinese Remainder Theorem)对该同余式组进行化简得到下列同余式组
// x % 2 = 1;
// x % 3 = 2;
// x % 5 = 4;
/*
for (int i = 7; ; i += 14) {
if (i % 2 == 1 && i % 3 == 2 && i % 5 == 4) {
std::cout << i << std::endl;
break;
}
}
*/
//endTime = clock();
//duration = ((double)(startTime - endTime)) / CLK_TCK;
//std::cout << duration << std::endl;
}