蓝桥等考Python组别
十八
级
第一部分:选择题
1、Python L
18
(15分)
运行下面程序,输入40,输出的结果是( )。
t = int(input())
if t < 30:
print(
15
)
else:
print(t // 15 * 2)
4
15
0
1
正确答案:
A
2
、Python L
18
(15分)
运行下面程序,输入3,输出的结果是( )。
n = int(input())
ans = 1
for i in range(2, n + 1):
ans *= i
print(ans)
3
6
12
18
正确答案:B
3、Python L
18
(20分)
运行下面程序,输入10,输出的结果是( )。
n = int(input())
i = 0
while n > 1:
n //= 2
i += 1
print(i)
1
2
3
4
正确答案:
C
第二部分:编程题
4
、Python L
18 欢乐豆换话费
(
5
0分)
题目名称:欢乐豆换话费
题目描述:
某网站
举办
“欢乐豆换话费”的活动,活动为期n天,每天登录签到后会随机送1~3个欢乐豆,每3个欢乐豆可以兑换10元电话费。
但是,每个欢乐豆的有效期只有2天,也就是说,最晚你
要
在获得欢乐豆的第2天将它们消费掉,否则欢乐豆作废。
已知每天获得的欢乐豆的数量,计算这些欢乐豆最多能兑换多少话费。
例如:
你在为期5天的活动中,每天获得的欢乐豆数量是1,1,1,3,2,最多可以兑换20元话费,因为:
第1天获得1个欢乐豆,显然不够3个,只能存起来,你的账户里有1个欢乐豆;
第2天获得1个欢乐豆,加上账户余额,不够3个,第1天存下的过期作废,你的账户里还是1个欢乐豆;
第3天获得1个欢乐豆,加上账户余额,不够3个,第2天存下的过期作废,你的账户里还是1个欢乐豆;
第4天获得3个欢乐豆,为了不让账户里的欢乐豆过期,你最好先消费1个旧的,再加上新获得的2个,兑换10元话费,还剩1个留在账户;
第5天获得2个欢乐豆,加上账户里的1个,正好再兑换10元话费。
输入:
第一行一个正整数n(n<=100),为活动的持续天数;
第二行一个字符串,由n个1~3的整数组成,第i个整数是第i天获得的欢乐豆数量,相邻两个整数之间用一个空格隔开。
输出:
一个整数,为这些欢乐豆最多能兑换话费的数额。
输入样例:
5
1 1 1 3 2
输出样例:
20
参考程序
1
:
n = int(input())
a = [int(i) for i in input().split(' ')]
ans = 0
for i in range(n - 1):
ans += (a[i] + a[i + 1]) // 3
a[i + 1] = (a[i] + a[i + 1]) % 3
ans += a[n - 1] // 3;
print(ans * 10)
参考程序
2
:
n = int(input())
a = [int(i) for i in input().split(' ')]
ans = 0
for i in range(n):
b = a[max(0, i - 1): i + 1] #统计最近两天的欢乐豆数量(如果有的话)
if sum(b) >= 3:
a[i] -= 3 - a[max(0, i - 1)] #计算第i天剩余的欢乐豆
ans += 10
a[max(0, i - 1)] = 0 #第i-1天的欢乐豆作废
print(ans)
参考程序
3
:
n = int(input())
a = [int(i) for i in input().split(' ')]
ans = a[0] // 3 * 10
a[0] = a[0] % 3
for i in range(1,n):
ans += (a[i] + a[i-1]) // 3 * 10
a[i] = (a[i] + a[i-1]) % 3
print(ans)
测试数据:
1.in
5
1 1 1 3 2
1.out
20
2.in
5
3 2 3 3 1
2.out
40
3.in
6
3 1 2 1 3 3
3.out
40
4.in
8
3 3 3 1 3 3 2 2
4.out
60
5.in
10
1 2 1 2 1 3 3 2 1 1
5.out
50
蓝桥杯青少组Python组别18级编程练习真题(第4套,共6套)