欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > 第14届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2022年8月21日真题

第14届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2022年8月21日真题

2024/10/24 18:22:55 来源:https://blog.csdn.net/qq_33897084/article/details/140180799  浏览:    关键词:第14届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2022年8月21日真题

14届蓝桥杯Python青少组中/高级组选拔赛(STEMA2022821日真题

题目总数:5    总分数:128

更多真题下载点我👇icon-default.png?t=N7T8https://pan.baidu.com/s/1JRLLwW2C-OBbcY2tJ3uYJg?pwd=2wk2

编程题

 1     问答题

编程实现:

给定一个正整数,输出正整数个位上的数字。

输入描述:

输入一个正整数

输出描述:

输出正整数个位上的数字

样例输入:

123

样例输出:

3

答案

n=input()
print(n[-1])

评分标准:

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

6分:能正确输出两组数据;

6分:能正确输出三组数据。

 2     问答题

提示信息:

二进制数据是用01两个数码来表示的数。它的基数为2,进位规则是逢二进一,借位规则是借一当二

编程实现:

给定一个正整数N,输出N在二进制表示下1的个数。

例如:N=55在二进制表示下为101,故有21

输入描述:

输入一个正整数N

输出描述:

输出N在二进制表示下1的个数

样例输入:

5

样例输出:

2

答案

list1=[]
N=int(input())
while N>0:list1.append(N%2)N//=2
list1.reverse()
print(list1.count(1))

评分标准:

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

6分:能正确输出两组数据;

8分:能正确输出三组数据。

 3     问答题

编程实现:

给定一个长度为N的列表(N为偶数),请你找出列表中出现次数大于N/2次的元素。

如:N=4,列表为[3233],其中列表中出现次数大于24/2)的元素为3,故输出3

输入描述:

输入N个整数,整数之间一个英文逗号隔开,N个整数表示列表中的元素

输出描述:

输出列表中出现次数大于N/2次的元素,如果不存在则输出-1

样例输入:

3,2,3,3

样例输出:

3

答案

list1=[]
s=input()
list2=s.split(',')for i in list2:if list2.count(i)>=(len(list2)/2) and i not in list1:list1.append(i)for i in list1:print(i)

解析

评分标准:

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

6分:能正确输出两组数据;

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

7分:能正确输出四组数据。

 4     问答题

提示信息:

字典序大小,是指字符串中字母在字母表中的先后顺序,即字母表中越靠前的字母,字典序越小。

例如:两个字符串acdcad,两个字符串的第一个字母分别为"a""c",其中"a"在字母表中排在"c"的前边,故

字符串acd字典序小与字符串cad。假如第一个字母相同,就比较第二个字母,以此类推。

编程实现:

给定一个长度小于200的字符串S,且字符串中只包含小写字母,然后按照以下要求对字符串S进行去重,并输出去重后的字符串。

要求:

1)如果有重复出现的字母,只保留1个,其他的去掉;

2)不得改变各字母相对位置;

3)保证去重后的字符串的字典序最小。

例如:

S=“cacd”,重复的字母有c,如果去掉第一个字母c,结果为acd;如果去掉第二个字母c结果为cad,比较两个去重后的结果,第一个结果的字典序小于第二个结果的字典序,故选择去掉第一个c,输出acd

输入描述:

输入一个长度小于200的字符串S,且字符串中只包含小写字母

输出描述:

按照要求对字符串S进行去重,并输出

样例输入:

cdacd

样例输出:

acd

答案

def cstr(str1):return ord(str1)-96
def Remove(str1):if str1=='' or len(str1)==1:return str1m=[0]*27for i in range(len(str1)):m[cstr(str1[i])]+=1min_idx=0for i in range(len(str1)):m[cstr(str1[i])]-=1if cstr(str1[i])<=cstr(str1[min_idx]):min_idx=iif m[cstr(str1[i])]==0:breakreturn str1[min_idx]+Remove(str1[min_idx+1:].replace(str1[min_idx],'
s=input()
print(Remove(s))

  评分标准:  

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

7分:能正确输出两组数据;

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

8分:能正确输出四组数据。

 5     问答题

编程实现:

有一个N*M的矩阵方格,每个方格中都有一个正整数,现从左上角方格出发向右下角方格移动,每次只能向下或向右移动一个方格,请你找出一条最小路径,并输出该路径上的正整数之和。

最小路径:这条路径上的正整数之和最小。

例如:N=2M=32*3的矩阵方格中的正整数如下,

按照移动规则,从左上角方格移动到右下角方格的路径共3条,分别为1->3->5->61->3->4->6,1->2->4->63条路径上的正整数之和分别为151413,其中正整数之和最小的一条路径是1->2->4->6,和为13,故输出13

输入描述:

第一行输入两个正整数NM2≤N≤1002≤M≤100),N表示矩阵方格的行数,M表示矩阵方格的列数,两个正整数之间以一个英文逗号隔开

第二行开始输入N行,每行M个正整数(1≤正整数≤200),正整数之间以一个英文逗号隔开

输出描述:

输出一个整数,表示最小路径上的正整数之和

样例输入:

2,3

1,3,5

2,4,6

样例输出:

13

答案

def min_path_sum(m):if m == None or len(m) == 0 or m[0] == None or len(m[0]) == 0:return 0row = len(m)col = len(m[0])dp = [[0]*col for i in range(row)]dp[0][0] = m[0][0]for i in range(0, row):dp[i][0] = dp[i-1][0] + m[i][0]for j in range(0, col):dp[0][j] = dp[0][j-1] + m[0][j]for i in range(1, row):for j in range(1, col):dp[i][j] = min(dp[i][j-1], dp[i-1][j]) + m[i][j]return dp[row-1][col-1]
matrix=[]
s=input()
list_t=s.split(',')
n=int(list_t[0])
m=int(list_t[1])
for i in range(n):v=input()list_temp=v.split(',')for i in range(len(list_temp)):list_temp[i]=int(list_temp[i])matrix.append(list_temp)
res = min_path_sum(matrix)
print(res)

评分标准:

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

7分:能正确输出两组数据;

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

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

7分:能正确输出五组数据。

更多蓝桥杯少儿编程学习资料

更多真题下载点我👇百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速,支持手机端。注册使用百度网盘即可享受免费存储空间icon-default.png?t=N7T8https://pan.baidu.com/s/1JRLLwW2C-OBbcY2tJ3uYJg?pwd=2wk2

↓ 点 击 关 注 ↓