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