求大神解答!!!
x = 7i = 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: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 条件 ,以此一直循环 Twilight6 发表于 2020-5-26 15:45
题目是这样的,因为题目最后说了每次 7 台阶刚好不剩,说明7可以整除
然后题目中的题意要全部满足, ...
你能给我这个程序的代码后面标注一下吗?麻烦了 窝在家里写程序 发表于 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次循环内找不到爱因斯坦台阶
Twilight6 发表于 2020-5-26 18:56
明白了谢谢!!!
窝在家里写程序 发表于 2020-5-26 19:08
明白了谢谢!!!
最后打错一个字 是反之 Twilight6 发表于 2020-5-26 18:56
那个x应该赋什么值都可以吧
页:
[1]