鱼C论坛

 找回密码
 立即注册
查看: 3031|回复: 2

[经验总结] 习题之数学故事之棋盘上的粮食

[复制链接]
发表于 2020-2-19 00:24:23 | 显示全部楼层 |阅读模式

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

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

x

之前一早有点不解,今天用学的python把他列了出来,新手上路,请大神多多指导,有更简单的方法请指点!

数学故事之棋盘上的粮食

      传说,古印度有一个人发明了一种游戏棋,棋盘共64格,玩起来十分新奇、有趣。他把这种棋献给了国王。国王玩得十分开心,便下令赏赐献棋人。臣下问献棋人想要什么。献棋人说:"他只需要粮食,要求大王给点粮食便心满意足了。"问他需要多少粮食,他说只要求在棋盘的第一个格子里放一粒米,在第二个格子放两粒米,第三个格子里放四粒米??总之,后面格子里的米都比它前一格增大一倍,把64格都放满了就行。国王一听,满口答应。大臣们也都认为:这点米,算得了什么,便领献棋人去领米。岂料,到后来把所有仓库里的存米都付出了,还是不够。

1+2+4+8+16......一直到第64个

ret = 0
i = 1
t = 0

while i <= 64:
   
   
    ret = 2 ** (i - 1)
    i += 1
    t += ret
   
print("t= {}" .format(t))


输出:t= 18446744073709551615
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-19 00:30:44 | 显示全部楼层
本帖最后由 jackz007 于 2020-2-19 00:32 编辑

       这个加法的实质其实就是让一个64位的二进制数的每一个二进制位都置 1,就是十六进制数 0xffffffffffffffff,也就是一个64位整数所能够表达的极限数值。
>>> print(0xffffffffffffffff)
18446744073709551615
>>> 
      
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-19 08:57:33 | 显示全部楼层
jackz007 发表于 2020-2-19 00:30
这个加法的实质其实就是让一个64位的二进制数的每一个二进制位都置 1,就是十六进制数 0xffffffffff ...

【表情】厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 22:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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