rb2448 发表于 2020-3-20 16:43:20

看到爱因斯坦就慌,求助

爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。
题目:请编程求解该阶梯至少有多少阶?

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('在程序限定的范围内找不到答案!')
求问:
1.flag什么意思?有什么作用?flag==1的作用?
2.i=1 是指台阶2-7阶的递增数么?

qiuyouzhi 发表于 2020-3-20 16:46:17

1,flag用于标记是否找到答案
2,因为0不可能是答案,所以用1

sunrise085 发表于 2020-3-20 17:11:01

本帖最后由 sunrise085 于 2020-3-20 17:16 编辑

flag就是一个标记而已,具体怎么定义完全由你决定,这段程序中设定flag为0表示没找到,flag为1表示找到了。你完全可以设定flag为'haha'表示没找到,flag为'hehe'表示找到了。
x = 7# 初始台阶数为7
i = 1#循环初始值
flag = 0#标记,flag为0不是没有找到答案,当找到答案的时候修改flag为1(当然名字自己随便取,标记的含义也是自己设定)

while i <= 100:#循环100次,若还是没找到就不找了
        if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):#台阶数已经是7的倍数了,若符合这几个条件则是要找的阶梯数
                flag = 1#符合条件表示找到了,设计标记flag为1,表示找到了
        else:#若是不符合条件,增加阶梯数,每次增加7个台阶
                x = 7 * (i+1) # 根据题意,x一定是7的整数倍,所以每次乘以7
        i += 1#每次循环,i=i+1

if flag == 1:#标记为1表示找到了
        print('阶梯数是:', x)
else:#标记不为1表示没找到
        print('在程序限定的范围内找不到答案!')
页: [1]
查看完整版本: 看到爱因斯坦就慌,求助