【解析】第十四届蓝桥杯11月STEMA- Python真题解析

梁老师
梁老师 北京小升初老师~

0 人点赞了该文章 · 88 浏览




11月STEMA- Python

11月STEMA已于2022年11月27日举办!让我们一起来看看新鲜出炉的Python组真题及解析吧!



01

第一题

(.input()输入函数的括号中不允许添加任何信息)

【编程实现】

输入一个整数N-100≤N≤100),输出N+10的结果。

例如:N = 55 + 10 的结果为1515=5+10)。

【输入描述】

输入一个整数N-100≤N≤100

【输出描述】

输出一个整数,表示N+10的结果

【样例输入】

5

【样例输出】

15

【参考代码】

n = int(input())print(n + 10)



02

第二题

(注.input()输入函数的括号中不允许添加任何信息)

【编程实现】

输入一个包含字符‘a’的字符串(字符串长度小于1000),输出字符串中字符‘a’的个数。

【输入描述】

输入一个包含字符‘a’的字符串

【输出描述】

输出一个整数,表示字符串中字符‘a’的个数

【样例输入】

ab!a

【样例输出】

2

【题目解析1】

使用字符串的count()指令直接获取字符'a'的个数。

【参考代码1】

s = input()print(s.count("a"))


【题目解析2】

使用计数器+遍历字符串方法,逐一判断字符是否为'a',满足条件计数器自增1。

【参考代码2】

s = input()cnt = 0for c in s:  if c == 'a':    cnt += 1print(cnt)


03

第三题

(注.input()输入函数的括号中不允许添加任何信息)

【编程实现】

现将N(3≤N≤600)根胡萝卜全部分配给黑、白、灰三只兔子,分配规则如下:

1)黑、白、灰三只兔子必须都能分到胡萝卜;

2)黑兔子的胡萝卜数大于或等于白兔子的胡萝卜数;

3)白兔子的胡萝卜数大于或等于灰兔子的胡萝卜数;


请按照规则计算,将N根胡萝卜全部分配给三只兔子,共有多少种不同的分配方法。

例如:N = 8,按照分配规则有5种不同的分配方法,具体分配方法如下图:

图片


【输入描述】

输入一个正整数N(3≤N≤600),表示胡萝卜的数量

【输出描述】

输出一个整数,表示将N根胡萝卜全部分配给三只兔子,共有多少种不同的分配方法

【样例输入】

8

【样例输出】

5

【题目解析】

本题可以使用双重for循环枚举 + 计数器解决。双重for循环分别表示黑兔和白兔的萝卜数量,则灰兔数量可以确定为总数 – 黑兔 – 白兔,从而避免第三层循环。如果当前情况的数量满足题目要求,则计数器自增1。需要注意的是枚举范围,最少为1,最多还需要保证剩下的兔子至少为1。

【参考代码】

n = int(input())cnt = 0for black in range(1, n - 1):    for white in range(1, n - black):        grey = n - black - white        if black >= white and white >= grey:            cnt += 1print(cnt)


04

第四题

(注.input()输入函数的括号中不允许添加任何信息)

【编程实现】

某服务大厅同时开放3个窗口为客户办理业务,窗口编号分别为1、2、3。

现有N(2≤N≤50)位客户需要办理业务,客户编号为1~N,作为办理业务的先后顺序。

起初三个窗口为空闲状态,空闲的窗口会按照客户编号顺序呼叫下一位客户。

如果多个窗口同时为空闲状态,按照窗口编号顺序呼叫(1优先于2,2优先于3)。

现给出每位客户办理业务的时间(单位:分钟),请计算出N位客户全部办理完业务后,

哪一个窗口合计办理业务的时间最短,并输出最短时间。


例如:N=7,7位客户编号分别为1、2、3、4、5、6、7,

客户办理业务时间分别为3、5、2、4、7、1、6,(如下图):

图片

初始客户编号为1、2、3的客户分别在1、2、3窗口同时办理业务;

窗口3用时2分钟办理完3号客户的业务,变为空闲状态,并按顺序呼叫4号客户,4号客户用时4分钟;

窗口1用时3分钟办理完1号客户的业务,变为空闲状态,并按顺序呼叫5号客户,5号客户用时7分钟;

窗口2用时5分钟办理完2号客户的业务,变为空闲状态,并按顺序呼叫6号客户,6号客户用时1分钟;

6分钟后,窗口2和3同时变为空闲状态,按顺序窗口2呼叫7号客户,7号客户用时6分钟。

全部客户办理完业务后,三个窗口总用时分别为10分钟、12分钟、6分钟,用时最短的是窗口3,最短时间为6分钟。


【输入描述】

第一行输入一个正整数N(2≤N≤50),表示办理业务的客户数

第二行输入N个正整数(1≤正整数≤50),依次表示每位客户办理业务的时间,正整数之间以一个空格隔开

【输出描述】

输出一个整数,表示客户全部办理完业务,用时最短的窗口所用时间

【样例输入】

7

3 5 2 4 7 1 6

【样例输出】

6

【评分标准】

4分:能正确输出第一组数据;

4分:能正确输出第二组数据;

4分:能正确输出第三组数据;

4分:能正确输出第四组数据;

4分:能正确输出第五组数据;

5分:能正确输出第六组数据。

【题目解析1】

本题属于“模拟”问题,方法1为客户维度模拟。

假设编号为 1、2、3 的窗口的办理业务累计的时间储存在列表c中,分别为c[0]、c[1]、c[2],第i个客户办理业务的时间为 ls[i - 1]。

对于第i个客户,需要找到一个时间结束最早的窗口,也就是办理业务累计的时间最小的(即),并给这个窗口的时间加上ls[i-1]。

最后 c[0],c[1],c[2] 的最小值即为答案。


【参考代码1】

n = int(input())ls = [int(i) for i in input().split(" ")]t = 1c = [0, 0, 0]for i in range(n):  if c[0] == min(c):    c[0] += ls[i]  elif c[1] == min(c):    c[1] += ls[i]  else:    c[2] += ls[i]print(min(c))


【题目解析2】

本题属于“模拟”问题,方法2为时间维度模拟。

使用变量t表示当前的时间流逝,每分钟保证变量t自增1,需要使用while循环。使用变量i表示每位客户的索引值,如果当前客户被接待,则i自增1。创建列表c用于表示每个窗口的累积业务时间,1、2、3号窗口的时间分别为c[0]、c[1]、c[2]。以1号窗口为例,如果t > c[0],则表示1号窗口空闲,可以接待新的客户,c[0]自增ls[i]。

需要注意,根据题目要求,判断的先后顺序一定按照窗口1/2/3的顺序。while循环中不可使用if-elif-else,因为可能存在某一分钟多个窗口同时接待新客户的情况出现。


【参考代码2】

n = int(input())ls = [int(i) for i in input().split(" ")]c = [0, 0, 0]t = 0i = 0while i < len(ls):  t += 1  if t > c[0]:    c[0] += ls[i]    i += 1  if i < len(ls) and t > c[1]:    c[1] += ls[i]    i += 1  if i < len(ls) and t > c[2]:    c[2] += ls[i]    i += 1print(min(c))


05

第五题

【编程实现】

现有22名小朋友,依次编号1到22,22名小朋友分别按照下图的位置站好。

图片

每名小朋友只能按照图中箭头指向的方向移动。给出两名小朋友的编号 N 和 M(1≤ N < M ≤ 22),请你找出从编号 N 到编号 M 共有多少条不同的路线。

例如:

N = 3,M = 7,从编号3的位置到编号7的位置共有5条路线,分别为:(3->5->7),(3->5->6->7),(3->4->5->7),(3->4->5->6->7),(3->4>6->7)。


【输入描述】

输入两个正整数 N 和 M(1 ≤ N < M ≤ 22),分别表示两名小朋友的编号,之间以一个空格隔开。

【输出描述】

输出一个整数,表示从编号 N 到编号 M 共有多少条不同的路线。

【样例输入】

3 7

【样例输出】

5

【题目解析】

本题属于递归类算法问题,思路和备考课中的台阶问题完全一致(每次可以上1或2级台阶)。本题中,起点和终点两个数的差即可类比为上台阶的级数。到数字M的方法数 = 到数字M–1的方法数 + 到数字M-1的方法数,满足斐波那契数列的特点。

【参考代码】

[n, m] = [int(i) for i in input().split(" ")]def func(n):  if n == 0:    return 1  if n == 1:    return 1  return func(n - 1) + func(n - 2)  print(func(m - n))

图片


添加 家长论坛微信 



发布于 2024-04-26 20:35

免责声明:

本文由 梁老师 原创发布于 家长帮 ,著作权归作者所有。

登录一下,更多精彩内容等你发现,贡献精彩回答,参与评论互动

登录! 还没有账号?去注册

暂无评论

广告
All Rights Reserved Powered BY WeCenter V4.1.0 © 2025 京ICP备20005761号-2