題目連結:
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
如何試得更快? 跳着試!