舍罕王的失算 不可低估等比數列和

2021-07-02 22:59:26 字數 2219 閱讀 4667

​1.問題提出

相傳現在流行的西洋棋時古印度舍罕王(shirham)的宰相達依爾(dahir)發明的。舍罕王十分喜愛象棋,決定讓宰相自己要求得到什麼賞賜。這麼聰明的宰相指著8*8共64格的香氣盤說,陛下,請您賞給我一些麥子吧,就在棋盤的第1格中放1粒,第2格放2粒,第3格放4粒,以後每一格逗比前一格增加一倍,依此放完棋盤上的64格,我就感恩不盡粒。

舍罕王讓人扛來一袋麥子,他要兌現它的許諾。

請問,國王能兌現它的許諾嗎?供藥多少個麥子賞賜他的宰相?合多少立方公尺(1立方公尺麥子約1.42e8粒)?如果把這些麥子堆成乙個正圓錐形的麥堆,這麥堆約有多高?

2.求解要點

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

​​第1格1粒,第2格2粒,第3格4=2²粒,......,第i格位2的i-1次方粒,於是總粒數為s=1+2+2²+2³+...。

​求出總粒數字s,折合為v立方公尺,則有:v=s/1.42e8。

​設正圓錐形的賣堆得底半徑為r,高為h,則有:

​v=(1/3)πr²h,h=√3*r

3.程式實現

//

// main.c

// 1_舍罕王的失算

//

// created by 萬齊鶼 on 15/5/30.

//

#include

#include

int

main

(int

argc

,const

char

*argv

)

v =s

/1.42e8

;

h =v

*9/3.1415926

;

h

=pow(h

,1.0/3

);// 求出麥堆得高

printf

("總麥粒數約為:%.3e\n",s

);

printf

("折合體積約為:%.0f立方公尺\n",v

);

printf

("正圓錐麥堆高約為:%.0f公尺\n",h

);

}

失算的另一名題——買馬釘

​某人以156盧布賣出一匹馬。成交後,買主後悔並向賣主說:「我上當了,你的馬不值這個價錢。」

​這時賣主提出另一筆交易:「你既然嫌馬太貴,那麼你買馬掌釘好了,這匹馬就白送你。每個馬掌要釘6個釘,共需24格釘。釘的**如下方法計算:第1格釘1格包盧斯卡(俄羅斯貨幣單位,相當於1/4個盧比),第2個釘2個包盧斯卡,第3個釘4格包盧斯卡,...,以後每個釘的**為前乙個釘的2倍,直到第24個。」

​買主聽後暗想,釘子如此便宜,馬還可白得,欣然同意。

​問:買主買馬釘要花多少盧布(1盧布等於100盧比,即400包盧斯卡)?

//

// main.c

// 1_1買馬釘

//

// created by 萬齊鶼 on 15/5/30.

//

#include

int

main

(int

argc

,const

char

*argv

)

printf

("共需話費約%.4f盧布。",s

/400

);

return

0;

}

1037 舍罕王的失算

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

C語言訓練 舍罕王的失算

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

一種類似等比數列求和問題的解法

有時,會遇到這樣的問題 求 sum n i kx i 其中,k很小,n很大,x可以是數,矩陣,或多項式。通常,有兩種做法 將x放入矩陣中,並依次把 a 1 i 拆開,把係數放入矩陣 其實就是楊輝三角 這個方法比較容易,但時間複雜度為 o k 3 log n 使用遞迴。從 frac n 2 的答案推到...