程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> hdu1370 Biorhythms

hdu1370 Biorhythms

編輯:C++入門知識

原題http://acm.hdu.edu.cn/showproblem.php?pid=1370

發現之前把所有題目都貼上給別人帶來不了什麼幫助。。現在寫寫題意。。。


題意:這個題據說是中國剩余定理- -表示什麼都沒看就AC了。光看的測試數據,算了算發現分別取余對應的余數就是一開始的輸入數據= =了然,後來糾結了一下混亂的輸入格式還有就是當天的天數如果大於或者等於到達高潮的那個天數。

寫幾個式子就很好懂了:

23x + p = a;

28y + e = a;

33z + i = a;

然後用x把y,z表示出來即可。。

發完文章看看人家剩余定理怎麼用的。。。我這應該是最簡單的算法了吧- =

小於0的情況可以是15 10 5 40

//============================================================================
// Name        : Math_hdu1370.cpp
// Author      : vit
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include 
#include 

using namespace std;

int main() {
	int i, n, t, k1, k2;
	int days;
	int p, e, d;
	cin >> n;
	while (cin >> p >> e >> i >> d && p != -1 && i != -1 && e != -1 && d != -1) {
		t = 23;
		k1 = p - e;
		k2 = p - i;
		while (1) {
			if ((t + k1) % 28 == 0 && (t + k2) % 33 == 0)
				break;
			t += 23;
		}
		days = t + p - d;
		if (days <= 0) {//小於0,尋找下一個高潮點
			t += 23;
			while (1) {
				if ((t + k1) % 28 == 0 && (t + k2) % 33 == 0)
					break;
				t += 23;
			}
			days = t + p - d;
		}
		cout << "Case " << n++ << ": the next triple peak occurs in " << days
				<< " days." << endl;
		;

	}
	return 0;
}


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved