请问这道题的详解应该是怎样啊?
爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。题目:请编程求解该阶梯至少有多少阶?
i = 1
x = 7
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)
i +=1
if flag == 1:
print("阶梯数为:",x)
else:
print("在程序限定的范围内找不到答案!")
有点看不懂{:10_277:} 看这个吧:戳我前进 从数学方面来分析,这道题要求一个数,是7的倍数,而且除以2余1,除以3余2,除以5余4,除以6余5。
回到代码来。首先,%号在Python中表示求余数。其次,限定一个循环的范围,是100,所以如果 i > 100,就要停止循环了。
循环的时候,先用%求余判断 x 符不符合要求,符合的话,flag变为1,不符合的话,x * (i + 1),最后i再加1。一直循环到 i > 100。
懂了吗?
i = 0
while i < 100:
if (i%2 == 1) and (i%3 == 2) and (i%5 == 4) and (i%6 == 5) and (i%7 == 0):
print(i)
i += 1
else:
print("不在限定范围内")
就是一个根据余数求值的问题,没有必要复杂化设置这么多的变量
代码要简单,直达要害,目的就是在范围内求出那个值而已 本帖最后由 一抹心尘 于 2020-10-31 12:59 编辑
我给你捋一捋,爱因斯坦说每上两节台阶余下1节台阶,那么是不是相当于一个数我们让它被2除,每次上两节台阶嘛,然后余1节台阶,也就是余1对吧。
那么同理,每次3阶,余下2阶,一个数被除以3 ,最后余2.后面就很清晰了,除以5余4,除以6余5,每上7阶,刚好不剩,也就是整除,就说明这个数为7的倍数。
那简单啊,咱们直接在7的倍数里面找呗。
x = 7
i = 1
while i <= 100:
if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
flag = 1
print(")
else:
x = 7 * (i+1) # 根据题意,x一定是7的整数倍,所以每次加1然后乘以7即可
i += 1
if flag == 1:
print('阶梯数是:', x)
else:
print('在程序限定的范围内找不到答案!')
这其实就是个很简单的数学问题。
页:
[1]