第一部分:选择题
1、Python L18 (15分)
运行下面程序,输入20,输出的结果是( )。
n = int(input())
if n % 2 == 0:
print(n // 2 * 10 + 5)
else:
print((n // 2 + 1) * 10)
- 105
- 110
- 100
- 95
正确答案:A
2、Python L18 (15分)
运行下面程序,输入4,输出的结果是( )。
n = int(input())
a = 1
for i in range(2, n + 1):
a = a + i
print(a)
- 8
- 10
- 12
- 14
正确答案:B
3、Python L18 (20分)
运行下面程序,输入11,输出的结果是( )。
n = int(input())
i = 0
while n > 1:
if n % 3 == 0:
n = n // 3
else:
n = n // 3 + 1
i += 1
print(i)
- 1
- 2
- 3
- 4
正确答案:C
第二部分:编程题
4、Python L18 环线地铁(50分)
题目名称:环线地铁
题目描述:
环线地铁的轨道首尾相连,共有n座车站,用数字0到n-1进行编号。
已知任何相邻车站之间的距离,a[i]表示编号为i的车站和编号为(i+1)%n的车站之间的距离。例如,下图是总共有5座车站的环线地铁的线路示意图:
地铁双向发车,你可以选择按顺时针和逆时针的方向行驶。
请计算从出发点x到目的地y之间的最短距离。
输入:
第一行一个正整数n(2<=n<=100),为车站数量;
第二行一个正整数x(0<=x<=n-1),为出发点车站编号;
第三行一个正整数y(0<=y<=n-1),为目的地车站编号;
第四行,由n个不大于100的整数组成,a[i]表示编号为i的车站和编号为(i+1)%n的车站之间的距离,相邻两个整数之间用一个空格隔开。
输出:
一个整数,表示x到y的最小距离。
输入样例:
4
0
2
1 2 3 4
输出样例:
3
参考程序1:
n = int(input())
x = int(input())
y = int(input())
a = [int(i) for i in input().split(' ')]
if x > y: #保证x<y
x, y = y, x
sum1 = 0
for i in range(x, y):
sum1 += a[i]
print(min(sum1, sum(a) - sum1))
参考程序2:
n = int(input())
x = int(input())
y = int(input())
a = [int(i) for i in input().split(' ')]
t = sum(a[min(x, y) : max(x, y)])
print(min(sum(a) - t, t))
测试数据:
1.in
4
0
2
1 2 3 4
1.out
3
2.in
5
2
3
9 10 8 1 1
2.out
8
3.in
6
1
6
7 3 9 10 1 7
3.out
7
4.in
8
7
3
4 7 1 5 1 6 2 7
4.out
14
5.in
10
9
5
5 4 7 3 10 10 5 10 8 1
5.out
30