POJ 1006_Biorhythms

  本題沒什麼編程難點,主要就是採用了中國剩餘定理解題。

在《孫子算經》中有這樣一個問題:“今有物不知其數,三三數之剩二(除以3餘2),五五數之剩三(除以5餘3),七七數之剩二(除以7餘2),問物幾何?”這個問題稱爲“孫子問題”,該問題的一般解法國際上稱爲“中國剩餘定理”。下面說說我對該定理的理解。

  首先確定3,5,7爲倆倆互質的數,找出3和5的公倍數中最小的能使它%7=1的數,再找出3和7的公倍數中最小的能使它%5=1的數,最後找出5和7的公倍數中最小的能使它%3=1的數,它們是15,21,70。用着三個數分別乘以他們所取餘的數7,5,3在題目中的餘數2,3,2然後求和,之後再用這個所求的和取餘3,5,7的最小公倍數105。即15*2+21*3+70*2=233,233%105=23。so,23即爲所求。

...具體代碼如下


#include <iostream>
#include <cmath>
using namespace std;

int main()
{
	int p, e, i, d, kase = 0;
	while (cin >> p >> e >> i >> d){
		if (p == -1 && e == -1 && i == -1 && d == -1)
			break;
		int ans = (1288 * i + 14421 * e + 5544 * p - d) % (23 * 28 * 33);
		if (ans <= 0)ans += 23 * 28 * 33;
		cout << "Case " << ++kase << ": the next triple peak occurs in " << ans << " days." << endl;
	}
	return 0;
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章