鱼C论坛

 找回密码
 立即注册
查看: 1005|回复: 10

[已解决]数麦子

[复制链接]
发表于 2023-12-19 17:45:31 | 显示全部楼层 |阅读模式

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

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

x
作业中的小麦计算,1-64格子,第一个格放一个,后续翻倍,一共多少个?
标答是:
i = 1
s = 0

while i <= 64:
    wheats = pow(2, i-1)
    s = s + wheats
    i = i + 1

print("舍罕王应该给达依尔", s, "粒麦子!")
返回:舍罕王应该给达依尔 18446744073709551615 粒麦子!

我的答案是:
#计算舍罕王应该给达依尔多少粒麦子?
rice = 1
i = 2
while i <= 64:
    rice = rice + rice * 2
    i = i + 1
print('舍罕王应该给达依尔',rice,'粒麦子!', sep=' ')
返回:舍罕王应该给达依尔 1144561273430837494885949696427 粒麦子!

我感觉自己的逻辑应该没有问题啊?到底哪里出错了@FishC


最佳答案
2023-12-19 19:24:51
本帖最后由 sfqxx 于 2023-12-19 19:25 编辑
水中有明月 发表于 2023-12-19 19:05
鸡哥你好,你这个算法只算了最后一个格子的麦子,没有加上前面格子的


#计算舍罕王应该给达依尔多少粒麦子?
rice = 1
i = 2
ans = 1
while i <= 64:
    rice = rice * 2
    ans+=rice
    i = i + 1
print('舍罕王应该给达依尔', ans, '粒麦子!', sep=' ')

求最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-19 17:45:38 | 显示全部楼层
i = 1
s = 1

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

print("一共有" + str(s) + "个小麦")

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-19 17:47:24 | 显示全部楼层

@FishC 我想问我的代码哪里不正确,为什么不能得到正确的值?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-19 17:47:33 | 显示全部楼层
水中有明月 发表于 2023-12-19 17:47
@FishC 我想问我的代码哪里不正确,为什么不能得到正 ...

嗨!我很乐意帮助你找出代码中的问题。请描述一下你的代码是做什么的,然后告诉我你遇到了什么问题。这样我就能更好地帮助你啦!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-19 18:53:29 | 显示全部楼层
你的代码逻辑是存在错误的。

在你的代码中,`rice = rice + rice * 2` 这一行,其实相当于每次都是 `rice = rice * 3` ,也就是说每次的麦子数量都是之前的3倍,这显然是错误的。原题是每个格子的麦子数目是上一个格子的2倍,而你的逻辑是每个格子的麦子数目是上一个格子的3倍。

正确的应该是 `rice = rice * 2`,也就是说:上一个格子有多少麦子,那么下一个格子就有上一个格子麦子的两倍。即每次麦子的数量都是之前的2倍,而并非你写的3倍。

代码:
#计算舍罕王应该给达依尔多少粒麦子?
rice = 1
i = 2
while i <= 64:
    rice = rice * 2
    i = i + 1
print('舍罕王应该给达依尔', rice-1, '粒麦子!', sep=' ')

求最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-19 19:05:57 | 显示全部楼层
sfqxx 发表于 2023-12-19 18:53
你的代码逻辑是存在错误的。

在你的代码中,`rice = rice + rice * 2` 这一行,其实相当于每次都是 `ric ...

鸡哥你好,你这个算法只算了最后一个格子的麦子,没有加上前面格子的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-19 19:21:00 | 显示全部楼层
水中有明月 发表于 2023-12-19 19:05
鸡哥你好,你这个算法只算了最后一个格子的麦子,没有加上前面格子的

OK
我改一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-19 19:23:53 | 显示全部楼层
#计算舍罕王应该给达依尔多少粒麦子?
rice = 1
i = 2
ans = 0
while i <= 64:
    rice = rice * 2
    ans+=rice
    i = i + 1
print('舍罕王应该给达依尔', ans, '粒麦子!', sep=' ')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-19 19:24:51 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sfqxx 于 2023-12-19 19:25 编辑
水中有明月 发表于 2023-12-19 19:05
鸡哥你好,你这个算法只算了最后一个格子的麦子,没有加上前面格子的


#计算舍罕王应该给达依尔多少粒麦子?
rice = 1
i = 2
ans = 1
while i <= 64:
    rice = rice * 2
    ans+=rice
    i = i + 1
print('舍罕王应该给达依尔', ans, '粒麦子!', sep=' ')

求最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-19 19:41:12 | 显示全部楼层

你这是另起一个式子,我想问问我那个式子在逻辑上哪里错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-19 19:57:48 | 显示全部楼层
水中有明月 发表于 2023-12-19 19:41
你这是另起一个式子,我想问问我那个式子在逻辑上哪里错了
在你的代码中,`rice = rice + rice * 2` 这一行,其实相当于每次都是 `rice = rice * 3` ,也就是说每次的麦子数量都是之前的3倍,这显然是错误的。原题是每个格子的麦子数目是上一个格子的2倍,而你的逻辑是每个格子的麦子数目是上一个格子的3倍。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 00:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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