习题之数学故事之棋盘上的粮食
之前一早有点不解,今天用学的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:32 编辑
这个加法的实质其实就是让一个64位的二进制数的每一个二进制位都置 1,就是十六进制数 0xffffffffffffffff,也就是一个64位整数所能够表达的极限数值。
>>> print(0xffffffffffffffff)
18446744073709551615
>>>
jackz007 发表于 2020-2-19 00:30
这个加法的实质其实就是让一个64位的二进制数的每一个二进制位都置 1,就是十六进制数 0xffffffffff ...
【表情】厉害
页:
[1]