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

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

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

先来看看题目的要求吧。

01
题目说明 

编程实现:

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

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

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

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

依次类推;

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

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

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

如下图:

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

输入描述:

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

输出描述:

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

样例输入:

7

样例输出:

3
02
思路分析 

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

本题中,每一层楼梯的积木块数量是一个自然等差数列,其公差为1。
我们只需要循环求和,从从第一层开始累加,并判断总积木数量是否 ≤ n,循环结束,就可以计算出完整的楼梯了。
关于求和,通常有如下两种方法:
  • 循环求和
  • 使用求和公式
循环求和比较简单,就是给定一个变量i,不停增加并累加即可,这是我们在学习编程时使用最多的方法了。
使用求和公式则是数学思维,对于前m项,其前m项之和为:
s = (m + 1) * m / 2
有了这个公式,就相当于在不等式m * (m + 1) / 2 <= n中,找到最大的m。

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

03
编程实现 
根据上面的思路分析,我们使用两种方法来编写程序:
  • 循环求和

  • 使用求和公式

1. 循环求和

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

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

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

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

2. 使用求和公式

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

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

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

04
总结与思考 
本题代码在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

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

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

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

需要源码的,可以添加本人微信

另外,超平老师创建了一个蓝桥杯备考交流群,这是专门为老师和家长打造的免费社群,您可以与来自全国各地的老师、家长共同交流经验,分享学习心得。

超平老师也会给大家带来及时的赛事动态,备考攻略,真题资源分享,帮助各位更好备考第15届蓝桥杯赛事,力争取得优异的成绩。

扫码或长按加入微信群

超平的编程课
青少儿编程教育专家,中国人民大学硕士,大学讲师,曾任知名上市机构金牌讲师,16年编程教研经验。大耳猴少儿编程联合创始人,致力于通过编程教育提升孩子的逻辑思维、数学思维和计算思维,迎接AI时代。
 最新文章