Python趣味案例之舍罕王赏麦
一、案例描述
据说印度的舍罕王打算重赏一个宰相,问他有何要求这位宰相说:“陛下,请您在这张棋盘的第一个格內赏给我一粒麦子,在第二个格内赏给我两粒麦子在第三个格內赏给我四粒麦子,照这样每一格内都比前一格多一倍,把这棋盘的64个格都放满就行啦”。舍罕王听后,认为这区区赏金微不足道,于是满口答应道:“爱卿,你所要求的并不多啊,你当然会如愿以偿请问:共需要赏赐给这位宰相多少粒麦子?
二、思路
使用循环来计算每格麦子数
三、代码
1、使用循环来解决
def shehanwang(n): t = 1 # 初始化当前格子麦子数 s = 1 # 初始化当前麦子数之和 for i in range(1,n): t *= 2 # 每一格麦子数都是上一格的两倍 s += t # 当前麦子数总和 print(s) shehanwang(64) # 18446744073709551615
2、使用列表生成式
print(sum([ 2 ** i for i in range(64)])) # 18446744073709551615