image

编辑人: 独留清风醉

calendar2025-05-21

message4

visits406

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

一、单选题

1、下列运算符中,优先级最高的是(   )。

A /

B %

C **

D +


2、下列数据类型中,哪一个是不可变的?(   )

A 列表

B 元组

C 字典

D 集合


3、执行以下程序后,输出的结果是(   )。

L =  [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ,9 ]

print ( L [1 : 4] )

A [ 1 , 2 , 3 ]

B [ 1 , 2 , 3 ,4 ]

C [ 2 , 3 ]

D [ 2 , 3 ,4 ]


4、下列选项描述正确的是(   )。

A continue语句可以结束整个循环的执行

B break和continue语句只能用在循环中

C 要从多层循环嵌套中退出时,只能使用goto语句

D break和continue语句在循环体内的作用相同


5、以下关于函数参数描述正确的是(   )。

A 调用函数时,按参数名称传递参数,需要按照定义时的顺序进行传递

B 函数在定义时,可选参数的位置可以在参数列表中任意位置

C 函数在定义时,可以不指定可选参数默认值,在调用函数时候参入参数

D 实参和形参存储在各自的内存空间中,所以是两个不相关的独立变量


二、实操题

6、编程实现:

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

例如:N = 8,8-5的结果为3(3 = 8-5)。

输入描述:

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

输出描述:

输出一个整数,表示N-5的结果


样例输入:

8

样例输出:

3

参考答案:对于给定的整数N(-100≤N≤100),我们需要输出N-5的结果。


7、编程实现:

给定一个正整数N(2≤N≤1000),请将N拆分成两个正整数的和,且两个正整数相差最小。

例如:

N = 4,拆分成两个相差最小正整数为2和2;

N = 5,拆分成两个相差最小正整数为2和3。

输入描述:

输入一个正整数N(2≤N≤1000)

输出描述:

第一行输出一个正整数,表示拆分后的两正整数中较小的那个(相同大小输出任意一个)

第二行输出一个正整数,表示拆分后的两正整数中较大的那个(相同大小输出任意一个)


样例输入:

5

样例输出:

2
3

参考答案:br />```pythonn = int(input())mid = n // 2if n % 2 == 0:print(mid)print(mid)else:print(mid)print(mid + 1)```


8、编程实现:

某商店部分产品搞活动,每买两件商品只收取最高价格商品的费用,另一件商品不收取费用(相同价格只收取一件商品费用)。小明选购了N件(2≤N≤1000,N为偶数)商品,且已知每件商品的价格,他会每次结算两件商品。请帮助小明计算出N件商品最少花费多少钱。

例如:N = 6,6件商品价格分别为32、56、92、45、12、98,可结算3次,98和92的商品一起结算,56和45的商品一起结算,32和12的商品一起结算,共花费186(186=98+56+32)。

输入描述:

第一行输入一个正整数N(2≤N≤1000,N为偶数),表示小明购买了商品数

第二行输入N个正整数(1≤正整数≤100),表示每件商品的价格,正整数之间以一个英文逗号隔开

输出描述:

输出一个整数,表示小明购买N件商品最少需要花费的钱数


样例输入:

6
32,56,92,45,12,98

样例输出:

186

参考答案:br />```pythondef min_cost(N, prices):prices.sort(reverse=True)cost = 0for i in range(0, N, 2):if i < N:cost += prices[i]if i + 1 < N:cost += prices[i + 1]return costN = int(input().strip())prices = list(map(int, input().strip().split(',')))print(min_cost(N, prices))```


9、编程实现:

有一个N*M的矩形拼图积木板(1≤N≤M≤15,N和M 为正整数),和若干个1*1、2*2、3*3……、10*10的正方形积木。使用任意积木将积木板铺满(不能有空隙),请问最少需要几块积木。

例如:N=3,M=4,最少需要4块积木(1块3*3,3块1*1)。

输入描述:

输入两个正整数N和M(1≤N≤M≤15),表示矩形积木板的长和宽,正整数之间以一个空格隔开

输出描述:

输出一个整数,表示铺满积木板最少需要的积木数量


样例输入:

3 4

样例输出:

4

参考答案:```pythondef min_blocks(N, M):dp = [[0] * (M + 1) for _ in range(N + 1)]for i in range(1, N + 1):for j in range(1, M + 1):dp[i][j] = dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1] + 1for k in range(1, min(i, j) + 1):dp[i][j] = min(dp[i][j], dp[i - k][j - k] + (k * k - k + 1) // 2)return dp[N][M]N, M = map(int, input().split())print(min_blocks(N, M))```


10、编程实现:

小明有一张矩形彩纸,他将彩纸均匀的画了N*M个小方格,有些小方格中被他画了小草,有些小方格是空白的,现小明想找出一片空白的方格,并且这片空白方格是最大的矩形。

给出N和M的值,及每个方格的状态,被画小草的小方格用数字1表示,空白小方格用数字0表示,请帮小明找出最大矩形,并输出最大矩形由多少个小方格组成。

例如:N=4,M=5,

输入描述:

第一行输入两个正整数N和M(2≤N≤100,2≤M≤100),分别表示矩形彩纸方格的行数和列数,两个正整数之间以一个空格隔开

第二行开始,输入N行,每行M个正整数(正整数为1或者0),1表示小草,0表示空白,正整数之间一个空格隔开

输出描述:

输出一个整数,表示最大矩形由多少个小方格组成


样例输入:

4 5
1 1 0 0 0
1 0 1 0 0
0 0 0 1 1
0 0 0 1 0

样例输出:

6

参考答案:```pythondef largestRectangleArea(heights):stack = []max_area = 0i = 0while i < len(heights):if not stack or heights[i] >= heights[stack[-1]]:stack.append(i)i += 1else:top = stack.pop()area = heights[top] * (len(stack) if not stack else heights[stack[-1]] - heights[top] + 1)max_area = max(max_area, area)i = top + 1while stack:top = stack.pop()area = heights[top] * (len(stack) if not stack else heights[stack[-1]] - heights[top] + 1)max_area = max(max_area, area)return max_areaN, M = map(int, input().split())grid = []for i in range(N):row = list(map(int, input().split()))grid.append(row)max_area = 0for j in range(M):heights = [0] * Nfor i in range(N):heights[i] = grid[i][j]area = largestRectangleArea(heights)max_area = max(max_area, area)print(max_area)```


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

创作类型:
原创

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

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