PAT (Basic Level) Practice 1070 结绳 Python

PAT (Basic Level) Practice 1070 结绳 Python_第1张图片

思路:

根据题意,每一次要将上一次连接好的绳子与当前折好的绳子连接,再整体对折,得到一次结果,

我们需要循环重复这个过程。

而题目要求我们输出最大长度,这时我们想到绳子的长度越长时,对折一次,失去的长度就越多,

如果我们从最短的绳子开始对折连接,一直到最后一个也就是最长的,那么这个过程中连接好的绳子的总长度减少的就是最少的。

排序: 将输入的绳子长度排序,由短到长

循环: 重复连接步骤得到最后的绳子长度

代码如下:

import math
input()
in_2=list(map(int,input().split()))
in_2.sort()
out_1=in_2[0]/2+in_2[1]/2
for i in range(2,len(in_2)):
    out_1=out_1/2+in_2[i]/2
print(math.floor(out_1))

提交结果:

PAT (Basic Level) Practice 1070 结绳 Python_第2张图片

你可能感兴趣的:(PAT考试练习Python,python,pat考试)