Python編程算法【十八】 舍罕王的失算
2022-10-25 21:17 作者:SPC編程愛(ài)好者 | 我要投稿
【案例內(nèi)容】
相傳國(guó)際象棋是古印度舍罕王的宰相達(dá)依爾發(fā)明的。 舍罕王十分喜愛(ài)國(guó)際象棋,便決定讓宰相自己選擇何種賞賜。這位聰明的宰相指著 8×8 共 64 格的象棋棋盤(pán)說(shuō):陛下,請(qǐng)您賞給我一些麥子吧。就在棋盤(pán)的第 1 格中放 1 粒,第 2 格放 2 粒,第 3 格放 4 粒,以后每一格都比前一格增加一倍,依此放完棋盤(pán)上 64 格,我就感激不盡了。舍罕王讓人扛來(lái)一袋麥子,他要兌現(xiàn)的許諾。請(qǐng)編程求出國(guó)王總共需要將多少麥子賞賜給他的宰相。
【解題思路】
從題中可知,第1格放1粒,第 2 格放 2 粒,第 3?格放 4 粒,以后每一格都比前一格增加一倍,轉(zhuǎn)換成數(shù)學(xué)問(wèn)題,從第1格、第2格、第3格存放麥子的數(shù)量分別是:
??????????????
? ????? ?
?
那么以此類(lèi)推,第64格存放麥子的數(shù)量是2的63次方,在Python中可用 2 ** 63?表示。
再用total變量存儲(chǔ)累加的總和,就能算出從第1格到第64格總共需要的麥子總數(shù),也就是國(guó)王需要賞賜的麥子數(shù)量。
【Python代碼】

本題難度較低,重點(diǎn)是抓住每個(gè)格子都是2的冪次方,再用for循環(huán)進(jìn)行累加即可解答出來(lái)。
標(biāo)簽: