欢迎光临散文网 会员登陆 & 注册

Python编程算法【十八】 舍罕王的失算

2022-10-25 21:17 作者:SPC编程爱好者  | 我要投稿

【案例内容】

相传国际象棋是古印度舍罕王的宰相达依尔发明的。 舍罕王十分喜爱国际象棋,便决定让宰相自己选择何种赏赐。这位聪明的宰相指着 8×8 共 64 格的象棋棋盘说:陛下,请您赏给我一些麦子吧。就在棋盘的第 1 格中放 1 粒,第 2 格放 2 粒,第 3 格放 4 粒,以后每一格都比前一格增加一倍,依此放完棋盘上 64 格,我就感激不尽了。舍罕王让人扛来一袋麦子,他要兑现的许诺。请编程求出国王总共需要将多少麦子赏赐给他的宰相。


【解题思路】

从题中可知,第1格放1粒,第 2 格放 2 粒,第 3 格放 4 粒,以后每一格都比前一格增加一倍,转换成数学问题,从第1格、第2格、第3格存放麦子的数量分别是:
    2%5E0%20          2%5E1%20          2%5E2 

那么以此类推,第64格存放麦子的数量是2的63次方,在Python中可用 2 ** 63 表示。
再用total变量存储累加的总和,就能算出从第1格到第64格总共需要的麦子总数,也就是国王需要赏赐的麦子数量。


【Python代码】

国王需要兑现的麦子数是个超级巨大的数字

本题难度较低,重点是抓住每个格子都是2的幂次方,再用for循环进行累加即可解答出来。

Python编程算法【十八】 舍罕王的失算的评论 (共 条)

分享到微博请遵守国家法律