邏輯題 舍罕王失算問題

2021-09-25 12:16:19 字數 1040 閱讀 6406

西洋棋是古印度舍罕王的宰相達依爾發明的,舍罕王獎勵宰相自己要求獎勵,宰相指著8*8共64格的棋盤說:「陛下,請您賞給我一些麥子吧,就在棋盤的第1格中放1粒,第2個放2粒,第3格放4粒,以後每一格都比前一格增加一倍,以此放完棋盤上的64格,我就感激不盡了。」舍罕王讓人扛來一袋麥子,他要兌現他的許諾。

擺放完棋盤上的64格共要多少麥子賞賜他的宰相?

這些小麥合多少噸(1噸小麥約 2.4e7 粒)?

這些小麥相當於世界糧食年總產量(以 2014 年度資料 2.48e9 噸計)的多少倍?

這是乙個典型的等比數列求解問題。

第一格 1 粒,第二格 2 粒,第三格 4=2*2 粒,……,第 i 格為2^(i-1)粒,於是總粒數為:

s = 1+2+4+8+……+2^63

為一般計,設共有 n 個格。

設定求和 i (2~n) 迴圈,在迴圈中通過 t=t*2 計算第 i 格的麥粒數,體現每一格為其前一格的 2 倍。再通過 s=s+t 把每一格的麥粒數累加到和變數 s,即可實現該等比數列各項的求和。求出的總粒數為 s ,通過 v=s/2.4e7 把 s 粒小麥的重量折合為 v 噸。

p = v/2.48e9 

所得 p 即為相當於全世界糧食總產量的倍數。

#include #include int main()

v = s / 2.4e7;

p = v / 2.48e9;

if (n <= 40)

else

printf(" 小麥重量約為:%.0f 噸\n", v);

printf(" 約相當於世界糧食年總產量的%.0f倍\n", p);

舍罕王失算

故事 相傳現在流行的西洋棋是古印度舍罕王 shirham 的宰相達依爾 dahir 發明的。舍罕王十分喜愛西洋棋,決定讓達依爾自己要求得到什麼賞賜。這位聰明的宰相指著8 8共64格的象棋盤說 陛下,請你賞給我一些麥子吧,就在棋盤的第1格中放1粒,第2格中放2粒,第3格中放4粒,以後每一格都比前一格增...

1037 舍罕王的失算

1037 舍罕王的失算 description 相傳西洋棋是古印度舍罕王的宰相達依爾發明的.舍罕王十分喜愛象棋,決定讓宰相自己選擇何種賞賜.這位聰明的宰相指著8 8共64格的象棋說 陛下,請您賞給我一些麥子吧.就在棋盤的第1格放1粒,第2格放2粒,第三格放4粒,以後每一格都比前一格增加一位,依此放完...

C語言訓練 舍罕王的失算

相傳西洋棋是古印度舍罕王的宰相達依爾發明的.舍罕王十分喜愛象棋,決定讓宰相自己選擇何種賞賜.這位聰明的宰相指著8 8共64格的象棋說 陛下,請您賞給我一些麥子吧.就在棋盤的第1格放1粒,第2格放2粒,第三格放4粒,以後每一格都比前一格增加一倍,依此放完棋盤64格,我就感激不盡了.舍罕王讓人扛了一袋麥...