天天看點

生理周期

題目連結:

poj 1006  http://poj.org/problem?id=1006

NOI題庫  http://noi.openjudge.cn/ch0201/1978/

Time Limit: 1000MS Memory Limit: 10000K

Description

人生來就有三個生理周期,分别為體力、感情和智力周期,它們的周期長度為23天、28天和33天。每一個周期中有一天是高峰。在高峰這天,人會在相應的方面表現出色。例如,智力周期的高峰,人會思維靈活,精力容易高度集中。因為三個周期的周長不同,是以通常三個周期的高峰不會落在同一天。對于每個人,我們想知道何時三個高峰落在同一天。對于每個周期,我們會給出從目前年份的第一天開始,到出現高峰的天數(不一定是第一次高峰出現的時間)。你的任務是給定一個從當年第一天開始數的天數,輸出從給定時間開始(不包括給定時間)下一次三個高峰落在同一天的時間(距給定時間的天數)。例如:給定時間為10,下次出現三個高峰同天的時間是12,則輸出2(注意這裡不是3)。

Input

輸入四個整數:p, e, i和d。 p, e, i分别表示體力、情感和智力高峰出現的時間(時間從當年的第一天開始計算)。d 是給定的時間,可能小于p, e, 或 i。 所有給定時間是非負的并且小于365, 所求的時間小于21252。 

當p = e = i = d = -1時,輸入資料結束。

Output

從給定時間起,下一次三個高峰同天的時間(距離給定時間的天數)。 

采用以下格式: 

Case 1: the next triple peak occurs in 1234 days. 

注意:即使結果是1天,也使用複數形式“days”。

Sample Input

Sample Output

解題思路:

來源:北大郭炜老師。

從d+1天開始,一直試到第21252 天,對其中每個日期k,看是否滿足 (k – p)%23 == 0 && (k – e)%28 == 0 &&(k-i)%33 == 0

如何試得更快? 跳着試!