枚举--生理周期

题目:生理周期

人有体力、情商、智商的高峰日子,它们分别每隔23天、28天和33天出现一次。对于每个人,我们想知道何时三个高峰落在同一天。给定三个高峰出现的日子p,e和i(不一定是第一次高峰出现的日子),再给定另一个指定的日子d,你的任务是输出日子d之后,下一次三个高峰落在同一天的日子(用距离d的天数表示)。例如:给定日子为10,下次出现三个高峰同一天的日子是12,则输出2。

输入:输入四个整数:p,e,i和d。p,e,i分别表示体力、情感和智力高峰出现的日子。d是给定的日子,可能小于p,e或i。所有给定日子是非负的并且小于或等于365,所求的日子小于或等于21252。
输出:从给定日子起,下一次三个高峰同一天的日子(距离给定日子的天数)。

输入样例:5 20 34 325
输出样例:Case 3: the next triple peak occurs in 19575 days.

 

import sys

while 1:
p, e, i, d = map(int, input("请输入p,e,i,d四个数值,以空格间隔:").split(" "))
if p <= 0 or e <= 0 or i<= 0 or d <= 0:
print("请输入正确的数值!")
continue
#break
else:
k = d + 1
while k > 0:
if (k - p) % 23 == 0:
break
k = k + 1
while 1:
if (k - e) % 28 == 0:
break
k = k + 23 #每次增加23目的是减少循环的次数,+23说明每次的k都是能被23整除的
while 1:
if (k - i) % 33 == 0:
break
k = k + 23 * 28
k = k - d
print("the next triple peak occurs in %d days" % k)
exit(0)

有些部分需要完善,目前先这样了^.^





posted @ 2020-02-01 18:33  StudyNLP  阅读(219)  评论(0编辑  收藏  举报