程序员数学基础【七、等比数列 棋盘麦粒】
題干:
根據歷史傳說記載,國際象棋起源于古印度,相傳國王要獎賞國際象棋的發明者,問他想要什么,發明者說:請您在棋盤的第一個格子里放1粒麥子,第二個格子里放2粒,第三個格子里放4粒,第四個格子里放8粒,以此類推,直到最后一個格子,第64格放滿為止。
賞給我這么多數目的麥粒,我就十分滿足了.國王覺得這個要求不高,就欣然同意了. 然而等到麥子成熟時,國王才發現,全印度的麥子竟然連棋盤一半的格子數目都填不滿.?
現在我們來幫助國王計算一下,想要填滿64格棋盤,到底需要多少麥粒。實際上這是一個等比數列求和問題。棋盤的第一格只需要麥粒a1=1,第二個需要麥粒a2=2,第3格a3=4,等等,這些麥粒的數量構成一個首項a1=1,公比q=2的等比數列。那么要求64格棋盤的總麥粒數。
再觀察對比這兩個等式,發現它們有很多相同的指數冪,所以可以把兩個等式相減來化簡,我們用2式減1式,等號左邊相減,2S64-S64,等號右邊相減,這些相同的指數冪會消掉,最后留下來的,只有2^64,減去1.所以能得到棋盤上的總麥粒數S64,等于264-1,這是一個天文數字,相當于全世界2000年的小麥產量。
【Python暴力解法】
#定義一個變量來保存總的麥子數量,開始為0 c=0 #定義一個變量,循環1-64,來代表每一個格子 i=1 #假設每個格子中的麥子數量為x,初始也是1 x=1 #循環 while i<=64:c += x #總數累計上這一個格子的麥粒數i += 1 #下一個格子x = x*2 #下一個格子的麥粒數是這一個格子的2倍 #顯示結果 print("64個格子,總的麥粒數量為:",c)?
上面計算麥粒的方法,對任何一個q不等于1的等比數列求和,都是適用的。等比數列的前n項和Sn,=a1+a2+...+an,我們用a1和q來表示。
錯位相減法不僅適合于等比數列的求和,更多的時候,如果一個數列的通項形式,可以表示成,一個等差數列與一個等比數列的乘積時,那么都可以用錯位相減法來求前n項和。至于等比數列想要求和,只要直接套公式就可以。
遠望巍巍塔七層,紅光點點倍加增,共燈三百八十一,請問尖頭幾盞燈?”意思是:一座7層塔共掛了381盞燈,且相鄰兩層中,下一層燈數是上一層燈數的2倍,則塔的頂層共有幾盞燈?
每層塔所掛的燈的數量形成一個等比數列,公比q=2,我們設塔的頂層有a1盞燈。7層塔一共掛了381盞燈,S7=381,按照等比求和公式, ?那么有a1乘以1-2的7次方,除以1-2,等于381.能解出a1等于3. ?尖頭必有3盞燈。
總結
以上是生活随笔為你收集整理的程序员数学基础【七、等比数列 棋盘麦粒】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 零基础学Python【二十三、图形化界面
- 下一篇: 数据库面试题【十三、大表数据查询,怎么优