Python趣味案例之舍罕王赏麦

                                            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


猜你喜欢

转载自blog.51cto.com/13760226/2467324