积木搭建楼梯-第13届蓝桥杯选拔赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第68讲。

积木搭建楼梯,本题是2021年8月14日举办的第13届蓝桥杯青少组Python编程选拔赛真题。题目要求按照描述的规律搭建楼梯,请编程计算使用n块积木可以搭建几层完整的楼梯。

先来看看题目的要求吧。

一.题目说明

编程实现:

小蓝要使用相同大小的积木搭建楼梯,每层需要使用的积木块数量规律如下:

第一层需要使用1块积木;

第二层需要使用2块积木;

第三层需要使用3块积木;

依次类推;

第m层需要使用m块积木。

现在小蓝有n块积木,按照以上规律搭建楼梯,问一共可以搭建几层完整的楼梯。

如:n = 7,第一层使用1块积木,第二层使用2块积木,第三层使用3块积木,第四层时剩余1块积木,不能完整搭建第四层,故不算完整的一层。即一共可以搭3层完整的楼梯。

如下图:

图片

积木块数小于层数,即不完整的一层

输入描述:

输入一个正整数n,表示积木块数

输出描述:

输出一个正整数,表示使用n块积木可以搭建几层完整的楼梯

样例输入:

7

样例输出:

3

二.思路分析

这是一道简单的计算题,涉及的知识点包括循环和运算。

本题中,每一层楼梯的积木块数量是一个自然等差数列,其公差为1。

我们只需要循环求和,从从第一层开始累加,并判断总积木数量是否 ≤ n,循环结束,就可以计算出完整的楼梯了。

关于求和,通常有如下两种方法:

  • 循环求和

  • 使用求和公式

循环求和比较简单,就是给定一个变量i,不停地增加并累加即可,这是我们在学习编程时使用最多的方法了。

使用求和公式则是数学思维,对于前m项,其前m项之和为:

s = (m + 1) * m / 2

有了这个公式,就相当于在不等式m * (m + 1) / 2 <= n中,找到最大的m。

思路有了,接下来,我们就进入具体的编程实现环节。

三.编程实现

根据上面的思路分析,我们使用两种方法来编写程序:

  • 循环求和

  • 使用求和公式

1. 循环求和

根据前面的思路分析,编写代码如下:

图片

代码比较简单,说明两点:

1). 循环条件是total <= n,不要漏了等于n的情况;

2). 循环结束,此时total > n,说明最后一层是无法搭建的,所以需要减去1,才是完整的楼层数。

2. 使用求和公式

使用求和,编写代码如下:

代码更加简单,意思和第一种方法一样,主要除法需要使用整除运算。

至此,整个程序就全部完成了,你可以输入不同的数字来测试效果啦。

四.总结与思考

本题代码在8行左右,涉及到的知识点包括:

  • 循环语句,主要是while循环;

  • 算术运算;

  • 比较运算;

  • 变量;

本题非常简单,代码也不多,注意两个细节,一是循环的结束条件,要考虑相等的情况,二是循环结束后,需要将楼层减去1。

很多同学可能会说,我还没有学到求和公式呢,实际上,非常的简单,运用数形结合的思想,只要理解了,你就再也忘不掉了。

以大家都熟悉的前10个数求和来说明:

1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10

可以将这个等式转化为一个几何图形问题,如图所示:

第一列1个小方块,第二列2个,...,第十列10个小方块,请问总共有多少个方块呢?

仔细观察上图,可以发现,它是一个非常规则的对称图形,可以将左下方的部分补充完整,如图:

图片

如此一来,这就变成一个长方形了,不过行数变成了11,列数保持不变。每一行有10个小方块,一共有11行,所有总的方块数量为:

11 * 10 = 110

再用110除以2,结果就是55了。

推而广之,对于1到n之间的求和,可以将其变成一个 n + 1行n列的长方形,因此总的方块数量就是:

(n + 1) * n / 2

是不是非常的简单,非常的神奇,这其实就是多元思维的体现,也是我们学习编程时经常会提及的。

你还有什么好的想法和创意吗,也非常欢迎和超平老师分享探讨。

如果你觉得文章对你有帮助,别忘了点赞和转发,予人玫瑰,手有余香😄

需要源码的,可以移步至“超平的编程课”gzh。

  • 15
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值