程序员数学基础【七、等比数列 棋盘麦粒】

题干:

根据历史传说记载,国际象棋起源于古印度,相传国王要奖赏国际象棋的发明者,问他想要什么,发明者说:请您在棋盘的第一个格子里放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盏灯。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

红目香薰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值