题意:三个正整数的最小公约数相关。难度:1星。
根据相关逻辑关系直接计算,也不算复杂。注意,在current day就是next triple peak day时,答案应为一个周期(21252);next triple peak day有可能小于current day,此时答案应在下一个周期内(即再加21252)。
讨论区中有同学用“中国剩余定理”解决。
题解代码:
/*
* POJ 1006 Biorhythms
* 简单数学运算:
*
* 说是可以用“中国剩余定理”;
*
*/
#include <iostream>
using namespace std;
int main()
{
int phyPeakDay, emoPeakDay, intPeakDay, currentDay, triPeakDay;
int i, n = 1;
while (cin >> phyPeakDay >> emoPeakDay >> intPeakDay >> currentDay && -1 != phyPeakDay)
{
phyPeakDay %= 23;
emoPeakDay %= 28;
intPeakDay %= 33;
for (i = 0; ; i++)
{
triPeakDay = phyPeakDay + 23 * i;
if (triPeakDay % 28 == emoPeakDay)
{
if (triPeakDay % 33 == intPeakDay)
{
break;
}
}
}//for (i = 0; ; i++)
cout << "Case " << n++ << ": the next triple peak occurs in "
<< (triPeakDay > currentDay ? triPeakDay - currentDay : triPeakDay - currentDay + 21252)
<< " days.\n";
}
return 0;
}

本文解析了POJ1006Biorhythms题目,介绍了使用简单数学运算找到三个人体节律峰值再次同步所需的天数的方法,并提供了完整的C++代码实现。
2112

被折叠的 条评论
为什么被折叠?



