窝在家里写程序 发表于 2020-5-26 15:40:55

求大神解答!!!

x = 7
i = 1
flag = 0

while i <= 100:
    if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
      flag = 1
    else:
      x = 7 * (i+1) # 根据题意,x一定是7的整数倍,所以每次乘以7
    i += 1

if flag == 1:
    print('阶梯数是:', x)
else:
    print('在程序限定的范围内找不到答案!')



我搞了两天到现在都还看不懂   为啥用这个程序来求爱因斯坦阶梯   求大神标注一下

Twilight6 发表于 2020-5-26 15:45:09

本帖最后由 Twilight6 于 2020-5-26 15:46 编辑

爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。
题目是这样的,因为题目最后说了每次 7 台阶刚好不剩,说明7可以整除
然后题目中的题意若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶要全部满足,才算是正确的台阶,也就是程序这里的 if 条件语句
if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
如果这个 if 条件不满足,就重新计算下一个 7 的倍数的台阶是否满足 if 条件 ,以此一直循环

窝在家里写程序 发表于 2020-5-26 18:45:35

Twilight6 发表于 2020-5-26 15:45
题目是这样的,因为题目最后说了每次 7 台阶刚好不剩,说明7可以整除
然后题目中的题意要全部满足, ...

你能给我这个程序的代码后面标注一下吗?麻烦了

Twilight6 发表于 2020-5-26 18:56:52

窝在家里写程序 发表于 2020-5-26 18:45
你能给我这个程序的代码后面标注一下吗?麻烦了

x = 7       # 初始化台阶数
i = 1       # 初始化循环次数
flag = 0    # 初始化判断是否是爱因斯坦台阶的参数

while i <= 100:
    # 若每步上2阶,最后剩1阶,就是 x % 2 == 1
    # 若每步上3阶,最后剩2阶,就是 x % 3 == 2
    # 若每步上5阶,最后剩4阶,就是 x % 5 == 4
    # 若每步上6阶,最后剩5阶,就是 x % 6 == 5
    # 只有每步上7阶最后不剩,所以我们直接初始拿 7 来作为起始台阶
    if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
      flag = 1# 如果符合条件则 flag = 1 为了让循环外面的 if flag == 1 判断 100 次内 有没有爱因斯坦台阶
    else:
      x = 7 * (i+1) # 根据题意,x一定是7的整数倍,所以每次乘以7
      
    i += 1 # 这是记录循环次数,循环100次内查找爱因斯坦台阶

if flag == 1:   # 如果flag == 1 那么就是爱因斯坦台阶
   
    print('阶梯数是:', x) # 打印台阶数
   
else:
    print('在程序限定的范围内找不到答案!')   #反正在100次循环内找不到爱因斯坦台阶

窝在家里写程序 发表于 2020-5-26 19:08:34

Twilight6 发表于 2020-5-26 18:56


明白了谢谢!!!

Twilight6 发表于 2020-5-26 19:09:04

窝在家里写程序 发表于 2020-5-26 19:08
明白了谢谢!!!

最后打错一个字 是反之

窝在家里写程序 发表于 2020-5-26 19:16:03

Twilight6 发表于 2020-5-26 18:56


那个x应该赋什么值都可以吧
页: [1]
查看完整版本: 求大神解答!!!