POJ 1006 Biorhythms - 数学逻辑

来源:互联网 发布:lua游戏源码 编辑:程序博客网 时间:2024/05/19 10:10

POJ 1006 Biorhythms

题意:三个正整数的最小公约数相关。难度: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;}

0 0
原创粉丝点击