鱼C论坛

 找回密码
 立即注册
查看: 2785|回复: 8

006讲 课后试题 动动手 2. 爱因斯坦的难题

[复制链接]
发表于 2019-9-13 16:35:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。


我写的代码

num=7
i=1

while i<=100:


    if (num%2==1) and (num%3==2) and (num%5==4) and (num%6==5):
        print(num)
    else:
        num=7*(i+1)

    i+=1

运行后为何不止一个119,而是84行的119,感觉是循环到17次 num=119 以后的每次循环都会打印一个119出来,不知为何,谢谢大家。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-9-13 16:39:15 From FishC Mobile | 显示全部楼层
你的if里面也要加上num=7*(i+1)的,不然下次就还是在计算这个num,没有计算到下一个
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-13 16:47:54 | 显示全部楼层
facevoid 发表于 2019-9-13 16:39
你的if里面也要加上num=7*(i+1)的,不然下次就还是在计算这个num,没有计算到下一个


num=7
i=1

while i<=100:


    if (num%2==1) and (num%3==2) and (num%5==4) and (num%6==5):
        print(num)
        num=7*(i+1)
    else:
        num=7*(i+1)

    i+=1

if 里面加上 num=7*(i+1) 后得出结果
119
329
539
这又是什么原因啊,谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-13 16:56:43 From FishC Mobile | 显示全部楼层
dundao999 发表于 2019-9-13 16:47
num=7
i=1


这就是最后的结果呀,你的while是i小于100,所以只给出了700之内的解,你要想多一些解就把i的循环范围设大一些
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-13 17:04:08 | 显示全部楼层
本帖最后由 dundao999 于 2019-9-13 17:06 编辑
facevoid 发表于 2019-9-13 16:56
这就是最后的结果呀,你的while是i小于100,所以只给出了700之内的解,你要想多一些解就把i的循环范围设 ...


哦,题目没看清楚,是求最少多少台阶
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-13 17:07:06 | 显示全部楼层
facevoid 发表于 2019-9-13 16:56
这就是最后的结果呀,你的while是i小于100,所以只给出了700之内的解,你要想多一些解就把i的循环范围设 ...

非常感谢 facevoid 的回复,问题已解决,谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-13 20:49:38 | 显示全部楼层
dundao999 发表于 2019-9-13 17:07
非常感谢 facevoid 的回复,问题已解决,谢谢!

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-9 20:47:52 | 显示全部楼层
为什么i+=1放在while循环中不放在else下,这样i=16的时候求得119,i<100循环不就继续了吗,但是放到else下又运行不出来为什么
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-9 21:04:07 | 显示全部楼层
挖掘师少女 发表于 2019-10-9 20:47
为什么i+=1放在while循环中不放在else下,这样i=16的时候求得119,i

就是要继续求除了119之外的更多的解啊,放到else下的话,一旦算到119就死循环了啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-19 08:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表