首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >程序员数学基础【七、等比数列 棋盘麦粒】

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

作者头像
红目香薰
发布2022-11-28 17:50:18
发布2022-11-28 17:50:18
1.2K0
举报
文章被收录于专栏:CSDNToQQCodeCSDNToQQCode

题干:

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

代码语言:javascript
复制
#定义一个变量来保存总的麦子数量,开始为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盏灯。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题干:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档