image

编辑人: 长安花落尽

calendar2025-08-05

message9

visits593

第14届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2022年10月30日真题参考答案

一、单选题

1、执行print(5%3)语句后,输出的结果是( )

A 0

B 1

C 2

D 3


2、以下选项中,哪一个是乘法运算符?( )

A %


B  //

C *

D  **


3、已知x=3,求x//2+x**2的运算结果?( )

A 7.5

B 10

C 8

D 10.5


4、关于字符串的strip方法的作用是(  )

A 只能删除字符串头部指定的字符

B 只能删除字符串尾部指定的字符

C 删除字符串头尾指定的字符

D 指定分隔符对字符串切片


5、以下选项中,对下面程序的打印结果描述正确的是( )。

a=[1,2,3,4]

i=len(a)-1

while i>=0:

print(a[i])

i-=1

A 把列表a倒序打印出来

B 把列表a顺序打印出来

C 去除列表a的第一项后并依次打印出每一项

D 去除列表a的最后一项后并依次打印出每一项


二、实操题

6、输入描述

输入一个字符串

输出描述

输出字符串中最后一个字符


样例输入

hgf

样例输出

f

参考答案:根据题目描述,我们需要输出输入字符串中最后一个字符。对于样例输入"hgf",最后一个字符是"f"。


7、编程实现

空调遥控器上的模式按钮可控制四种模式的切换。空调的初始模式为制热模式,第一次按下按钮变为制冷模式,第二次按下按钮变为睡眠模式,第三次按下按钮变为除湿模式,第四次按下按钮变为制热模式,第五次按下按钮变为制冷模式,以此类推。请计算出按下N次按钮后,空调为何种模式。

输入描述

输入一个正整数N(1<N<1000),表示按下空调遥控器的模式按钮的次数(初始模式为制热模式)

输出插述

输出一个大写字母,当按下模式按钮N次后,空调为制热模式则输出“R”,为制冷模式则输出“L”,为睡眠模式则输出“S”,为除湿模式则输出“C”


样例输入

5

样例输出

L

参考答案:根据题目描述,按下模式按钮的切换顺序是:制热模式 -> 制冷模式 -> 睡眠模式 -> 除湿模式 -> 制热模式 -> 制冷模式 -> ...,以此类推。这是一个循环模式,周期为4。我们可以使用取模运算来确定按下N次按钮后空调的模式。首先,我们需要判断N除以4的余数,以确定当前处于循环的哪个位置。然后,根据余数的值,我们可以确定空调的模式。具体的算法如下:1. 计算N除以4的余数,记为remainder。2. 如果remainder为0,表示当前处于制热模式,输出“R”。3. 如果remainder为1,表示当前处于制冷模式,输出“L”。4. 如果remainder为2,表示当前处于睡眠模式,输出“S”。5. 如果remainder为3,表示当前处于除湿模式,输出“C”。


8、编程实现

小蓝有多张兑换券,这些兑换券可分为A、B、C三种,且1张A加1张B加1张C组合可以兑换一个玩偶。

现将所有兑换券排成一排,并以字符串的形式给出,请帮助小蓝计算出现有兑换券最多可以兑换几个玩偶。

例如:字符串为AABBCACCC,可以组成2组ABC,故最多可以兑换2个玩偶。

输入描述

输入一个由A、B、C三个大写字母组成的字符串(字符串长度小于1000),表示所有的兑换券

输出描述

输出一个整数,表示所有兑换券按照兑换要求最多可以兑换玩偶的数量


样例输入

AABBCACCC

样例输出

2

参考答案:```pythondef max_toys(s):count_a = s.count('A')count_b = s.count('B')count_c = s.count('C')min_count = min(count_a, count_b, count_c)return min_count# 测试样例s = "AABBCACCC"print(max_toys(s)) # 输出:2```


9、编程实现

现有N罐糖果,且已知每罐糖果的初始数量。现给出两个数值L和R(L<=R),需要把每罐糖果的数量调整为:L<=任意一罐糖果的数量<=R。

调整的方式是每次从其中一罐糖果中拿出1块放到其他糖果罐中。请你计算出最少调整几次才能使每罐糖果的数量都在L到R范围之间,如果不能将每罐糖果都调整到L到R范围之间则输出-1。

例如:N=2,2罐糖果的初始数量为3和8,L=3,R=6,通过调整使得:3<=任意一罐糖果的数量<=6,调整方式如下:

第一次从初始数量为8的罐中拿1块放到初始数量为3的罐中,调整后为(4,7);

第二次从数量为7的罐中拿1块放到数量为4的罐中,调整后为(5,6);

故最少调整2次。


样例输入

2
3 8
3 6

样例输出

2

参考答案:对于这个问题,我们可以使用贪心算法来解决。首先,我们需要统计所有糖果罐中糖果数量的总和,记为total。然后,我们遍历每个糖果罐,如果当前糖果罐的数量小于L,则我们从其他糖果罐中拿出糖果放入该糖果罐,直到该糖果罐的数量达到L;如果当前糖果罐的数量大于R,则我们从该糖果罐中拿出糖果放入其他糖果罐,直到该糖果罐的数量达到R。在这个过程中,我们记录下调整的次数。最后,我们还需要检查是否所有的糖果罐都在L到R的范围内。如果有任何一个糖果罐的数量不在L到R的范围内,那么我们就无法将所有糖果罐都调整到L到R的范围内,此时返回-1;否则,返回调整的次数。


10、编程实现

有一个N*M的矩阵,且矩阵中每个方格中都有一个整数(0<=整数≤100),小蓝需要按照以下要求从矩阵中找出一条最长的移动路线,且输出最长路线的长度(1个方格为1个长度)。

要求:

1.小蓝可以从矩阵中任意一个方格开始向它的上、下、左、右相邻的任意一个方格移动,且移动的路线不能有交叉;

2.小蓝每次所要移动到的方格中的整数都要小于当前所在方格中的整数(如当前所在的方格中的整数为3,那么可以移动到数字为0,1,2的格子里,不可以移动到数字为3,4,5 ... 的格子里);

例如:N=3,M=3,矩阵方格如下:


参考答案:首先,需要创建一个N*M的矩阵,并将每个方格中的整数输入到矩阵中。然后,可以使用深度优先搜索(DFS)或广度优先搜索(BFS)算法来找到最长的移动路线。在搜索过程中,需要记录当前所在方格的位置和路径长度,并根据题目要求判断下一步是否可移动。如果当前所在方格中的整数为n,则只能移动到整数小于n的方格中。如果找到一条可移动的路线,并且路径长度大于之前找到的最长路径长度,则更新最长路径长度。最后,输出最长路径长度即可。


喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:第14届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2022年10月30日真题参考答案

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share