国王与数学家阿基米德下棋,在棋盘上放米,国王输了,国王问阿基米德要什么奖赏?
阿基米德对国王说:
我只要在棋盘上第一格放一粒米,第二格放二粒,第三格放四粒,第四格放十六粒………
按这个倍增的比例放满整个棋盘的64个格子就行。求一共多少粒米。
如果要求使用map,reduce
from functools import reduce
reduce(lambda a,b:a+b,map(lambda i:2**i,range(0,64)))
得到输出
18446744073709551615
就结束啦!
当然也有更简单的做法,直接用sum函数就可以
print(sum([2**n for n in range(64)]))
刚接触python的小萌新,各位大佬多多指教。
内师大
计科汉二