鱼C论坛

 找回密码
 立即注册
查看: 2789|回复: 7

[已解决]舍罕王的失算版答案疑问

[复制链接]
发表于 2022-8-29 16:51:29 | 显示全部楼层 |阅读模式

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

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

x
麻烦帮忙看看有什么不对的?和课后答案相差1,是哪里有问题呢?看了答案自己没找出差异,麻烦帮忙看看。
i=0

while i <= 64:
    sum1=2**i
    i = i + 1

print("舍罕王应该给达依尔", sum1, "粒麦子!")

-----------------------------------
解出:舍罕王应该给达依尔 18446744073709551616 粒麦子!


最佳答案
2022-8-29 17:20:43
i=0
sum1=0
while i <= 63:
    sum1=sum1+2**i
    i = i + 1

print("舍罕王应该给达依尔", sum1, "粒麦子!")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-29 17:20:43 | 显示全部楼层    本楼为最佳答案   
i=0
sum1=0
while i <= 63:
    sum1=sum1+2**i
    i = i + 1

print("舍罕王应该给达依尔", sum1, "粒麦子!")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-29 17:28:32 | 显示全部楼层
暂时没有找出问题,不过说相差了1,或许可以这样写
i=0

while i <= 64:
    sum1=2**i
    sum1 -= 1 #这里可以是+=1,要看相差的是多了还是少了
    i = i + 1

print("舍罕王应该给达依尔", sum1, "粒麦子!")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-29 19:39:47 | 显示全部楼层
sum1初始化没弄好
设为0再试试
i=0
sum1=0
while i <= 63:
    sum1=sum1+2**i
    i = i + 1

print("舍罕王应该给达依尔", sum1, "粒麦子!")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-29 20:13:36 | 显示全部楼层
sum1 是要初始化的 , 你这样循环每次 sum1 的值只是那一个格子的麦子
应该是每次循环都算出来, 加给 sum1 , 这样才是正确答案
i = 0
sum_ = 0

while i <= 63:
    sum_ += 2 ** i
    i += 1

print(sum_)
至于为什么循环到 63 , 第一个格子是 2 的 0 次方 , 不是 1 次方
所以第 64 个格子是 2 的 63 次方 , 自己数一下就明白了
然后 2 ^0 + 2 ^ 1 + ... + 2 ^ 63 == 2 ^ 64 - 1
所以可以直接这么写 :
print(2 ** 64 - 1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-29 23:37:34 | 显示全部楼层
柿子饼同学 发表于 2022-8-29 20:13
sum1 是要初始化的 , 你这样循环每次 sum1 的值只是那一个格子的麦子
应该是每次循环都算出来, 加给 sum1  ...

明白了思路了,但是另外请教下,题目说第1-3的格子依次是:1,2,4
如果按这个步骤解答的话,第1-3的格子依次为:1,3,7。包括小甲鱼的答案我按他的步骤校验1-3格子也是分别为1,3,7。可是这样不是会偏离题目吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-30 08:47:27 | 显示全部楼层
dearbolo 发表于 2022-8-29 23:37
明白了思路了,但是另外请教下,题目说第1-3的格子依次是:1,2,4
如果按这个步骤解答的话,第1-3的格子 ...

不是吧 , 根据题意 , 第一个格子 1 , 后面每个格子是前一个的两倍
所以是 1 2 4 8 16 ... 这样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-30 09:39:27 | 显示全部楼层
asky533 发表于 2022-8-29 17:28
暂时没有找出问题,不过说相差了1,或许可以这样写:

按你的思路
print(18446744073709551615)
正解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-26 08:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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