柿子饼同学 发表于 2021-7-26 12:27:08

浅谈爱因斯坦阶梯问题

本帖最后由 柿子饼同学 于 2021-7-26 12:30 编辑

爱因斯坦DE奇妙阶梯

【题目描述】 有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;
             若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。请问该阶梯至少有多少阶?{:10_249:}


【转换一下】 但凡学过数学的都知道它说的什么意思
             由题意可知: 阶梯数除以2余1, 除以3余2, 除以5余4, 除以6余5, 可以被7整除{:10_257:}


【详    解】 根据总结出的条件,我们只要抄起电脑,让它从1开始,一个一个试, 看看满不满足条件,总能试出来
             很容易就可以把判断代码写好
             我们先给阶梯数一个名字,方便以后调用
steps = 1                               判断代码就按照上面条件写{:10_321:}
if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5):                  现在,问题来了!要怎样才能让程序一个一个试,最后找到合适的阶梯数结束并返回呢?
                      -- ?这不是循环干的事吗?
                     没错!
                     让它从1开始数,不找到不停
                     (好像没有合适的循环条件?)
                     那我们就不用了{:7_132:}
while True:                               走起~
                  我们让程序每次循环判断一次,然后自增1
<blockquote>while True:                  但是,这样是不是显得有点傻?{:9_233:}
                  根据题目,我们只需要找7的倍数,就好啦 (刚刚不是说被7整除吗)
                  所以从7开始,7个7个数就好
                  所以我们再搞一个变量,用来乘7,这时每个循环它加一就好了
                  到时候找到了直接退出循环,美滋滋
k = 1                         完整代码{:10_277:}
k = 1
steps = 7
while True:
    if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5):
      print(steps)                        #把它打印出来,这不用解释了吧
      break
    else:
      k += 1
      steps = k * 7

      
   


xfmiao 发表于 2021-7-27 10:11:15

思路清晰完整不错

小伤口 发表于 2021-7-27 12:06:06

讲的真好
排版也非常nice{:9_232:}

傅彧 发表于 2021-8-18 17:35:17

赞赞赞

hornwong 发表于 2021-8-19 18:03:52

{:5_95:}

YouCam 发表于 2021-8-19 19:41:43

小伤口 发表于 2021-7-27 12:06
讲的真好
排版也非常nice

你的头像是谁?

小伤口 发表于 2021-8-19 23:42:15

YouCam 发表于 2021-8-19 19:41
你的头像是谁?

我也不认识{:10_250:}
页: [1]
查看完整版本: 浅谈爱因斯坦阶梯问题