蓝桥等考Python组别十八级003

第一部分:选择题

1、Python L18 (15分)

运行下面程序,输入20,输出的结果是(    )。

n = int(input())

if n % 2 == 0:

    print(n // 2 * 10 + 5)

else:

    print((n // 2 + 1) * 10)

  1. 105
  2. 110
  3. 100
  4. 95

正确答案:A

2、Python L18 (15分)

运行下面程序,输入4,输出的结果是(    )。

n = int(input())

a = 1

for i in range(2, n + 1):

    a = a + i

print(a)

  1. 8
  2. 10
  3. 12
  4. 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. 1
  2. 2
  3. 3
  4. 4

正确答案:C

第二部分:编程题

4、Python L18 环线地铁50分)

题目名称:环线地铁

题目描述:

环线地铁的轨道首尾相连,共有n座车站,用数字0到n-1进行编号。

已知任何相邻车站之间的距离,a[i]表示编号为i的车站和编号为(i+1)%n的车站之间的距离。例如,下图是总共有5座车站的环线地铁的线路示意图:

蓝桥等考Python组别十八级003_第1张图片

地铁双向发车,你可以选择按顺时针和逆时针的方向行驶。

请计算从出发点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

    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

你可能感兴趣的:(python,算法,数据结构)