蓝桥等考Python组别
十八
级
第一部分:选择题
1、Python L
18
(15分)
运行下面程序,输入40,输出的结果是( )。
n
= int(input())
if
n % 2 == 0 and n % 10 == 4
:
print(
n // 2
)
else:
print(
n
//
2 + 1
)
20
21
40
41
正确答案:
B
2
、Python L
18
(15分)
运行下面程序,输入3,输出的结果是( )。
n = int(input())
ans = 0
for i in range(1, n + 1):
ans += (1 + i) * 2
print(ans)
15
18
20
21
正确答案:B
3、Python L
18
(20分)
运行下面程序,输入6,输出的结果是( )。
n = int(input())
i = 0
while n > 1:
n //= 2
i += 1
print(i)
1
2
3
4
正确答案:
B
第二部分:编程题
4
、Python L
18
热气球
(
5
0分)
题目名称:
热气球
题目描述:
旅游景区新开设了一项极其刺激的游乐项目——热气球飞行。在确定票价之前,景区想先对游客的乘坐意愿和消费能力进行一次摸底。
有n个游客按顺序排成一队,每人都填报了一个数字,表示他(她)愿意花多少钱去体验这个项目。因为项目对游客的勇气有极高要求,有些人填报的数字可能是负数,表示只有当有人给他(她)钱的情况下才愿意去乘坐。
热气球最多乘坐m个人,景区的组织者想从这n个游客中选出连续的不超过m个,乘坐热气球飞行,使得这趟飞行获得的收益最大(收益用钱数衡量,即这不超过m个游客,填报的数字之和)。请你计算组织者可能获得的最大收益。
输入:
第一行一个整数n;
第二行一个整数m(1<=m<=n<100);
第三行,以字符串形式输入
n
个不相同的整数(大小在
-100
~10
0
范围内),相邻两个整数用一个空格分隔,依次表示
每个游客愿意花多少钱去体验这个项目。
输出:
一个整数,代表
景区的组织者可能获得的最大收益。
输入样例
1
:
5
2
1 2 3 2 1
输出样例
1
:
5
输入样例
2
:
6
3
1 -2 3 -4 5 -6
输出样例
2
:
5
参考程序
1
:
n = int(input())
m = int(input())
a = [int(i) for i in input().split(' ')]
ans = 0
front = 0 #队首元素位置
rear = 0 #队尾元素位置
for i in range(n):
rear += 1 #队尾入队
if a[i] < 0 or rear - front >= m: #如果队尾是负数
front += 1 #队首出队
while front < n and a[front] < 0: #如果新队首是负数,也都出队
front += 1
ans = max(ans, sum(a[front: rear+1])) #更新最大收益
print(ans)
参考程序
2
:
n = int(input())
m = int(input())
a = [int(i) for i in input().split(' ')]
ans = 0
for i in range(n):
for j in range(i + 1, n + 1):
if j-i<=m:
ans = max(ans, sum(a[i: j]))
print(ans)
参考程序
3
:
n = int(input())
m = int(input())
a = [int(i) for i in input().split(' ')]
a.insert(0, 0)
dp = [0] * (n + 1)
for i in range(1, n + 1):
if a[i] > 0:
M = 0
for j in range(i, max(0, i - m), -1):
M = max(M, sum(a[j : i + 1]))
dp[i] = max(M, dp[i - 1])
else:
dp[i] = dp[i - 1]
print(dp[n])
测试数据:
1.in
5
2
1 2 3 2 1
1.out
5
2.in
5
3
1 2 3 2 1
2.out
7
3.in
6
3
4 1 3 2 3 1
3.out
8
4.in
6
3
1 -2 3 -4 5 -6
4.out
5
5.in
10
4
1 -2 3 -4 2 3 -1 -2 5 3
5.out
8
蓝桥杯青少组Python组别18级编程练习真题(第6套,共6套)