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 的答案推到...