dingtao 发表于 2020-2-19 00:24:23

习题之数学故事之棋盘上的粮食


之前一早有点不解,今天用学的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

jackz007 发表于 2020-2-19 00:30:44

本帖最后由 jackz007 于 2020-2-19 00:32 编辑

       这个加法的实质其实就是让一个64位的二进制数的每一个二进制位都置 1,就是十六进制数 0xffffffffffffffff,也就是一个64位整数所能够表达的极限数值。
>>> print(0xffffffffffffffff)
18446744073709551615
>>>
      

dingtao 发表于 2020-2-19 08:57:33

jackz007 发表于 2020-2-19 00:30
这个加法的实质其实就是让一个64位的二进制数的每一个二进制位都置 1,就是十六进制数 0xffffffffff ...

【表情】厉害
页: [1]
查看完整版本: 习题之数学故事之棋盘上的粮食