
思路:
根据题意,每一次要将上一次连接好的绳子与当前折好的绳子连接,再整体对折,得到一次结果,
我们需要循环重复这个过程。
而题目要求我们输出最大长度,这时我们想到绳子的长度越长时,对折一次,失去的长度就越多,
如果我们从最短的绳子开始对折连接,一直到最后一个也就是最长的,那么这个过程中连接好的绳子的总长度减少的就是最少的。
排序: 将输入的绳子长度排序,由短到长
循环: 重复连接步骤得到最后的绳子长度
代码如下:
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))
提交结果:
