1.2_枚举_生理周期

在这里插入图片描述
在这里插入图片描述
这里面有三个代码
一是最开始写的有问题的代码,他们相同时去的不一定是一样的n
二是正确的但每一个日期都走了一边
三是当三个均为高峰时肯定是每一个都是高峰那么只取体力是高峰的日子

# #这个题目会给4个数据
# #分别为p,e,i,d
# #需要求出来的是距离d的天数(直接减就ok了)
# p,e,i,d=eval(input('请输入数据(用,隔开):'))
# n=1  #这个n对应的是出现高峰的次数
# while True:
#     if p+23*n==e+28*n==i+33*n:
#         #那么该次和为同时出现高峰的天数
#         if p+23*n-d>21252:
#             break
#         print(p+23*n-d)
#     print(n)
#     n+=1

#上述代码的问题很明显我是用n来计算日子确实算出来是高峰的时候,但这样算出来的结果一般是不会相等的
#比如将p,e,i,d全部取0  同时出现高峰的日子差了21252对应的n分别为924.0,759.0,644.0

# p,e,i,d=eval(input('请输入数据(用,隔开):'))
# for k in range(d,21252+d+1):
#     if 0==(k-p)%23==(k-e)%28==(k-i)%33:
#         print(k-d)
# #这看起来是很简单的,事实也是这样.
# #但枚举主要的困难地方在于舍弃看起来就不可能的


#要想三个都是高峰那么每一个都需要是高峰,这样的话可以只去p为高峰的天数
p,e,i,d=eval(input('请输入数据(用,隔开):'))
k=p
while k-d<=21252:
    if 0==(k-e)%28==(k-i)%33:
        print(k-d)
    k+=23

猜你喜欢

转载自blog.csdn.net/qq_53183608/article/details/118864443