给出一个整数数组,最多执行K
个运算,以便最终数组的元素总数最小。操作定义如下-
考虑数组arr[i]
中的任何1个元素。
将arr[i]
替换为floor(arr[i]/2)
。
对更新后的数组执行下一步操作。
任务是在最多K
个操作之后使总和最小化。
输入
4 3
20 7 5 4
输出
17
说明
操作1->选择20.替换为10。
新数组= [10, 7, 5, 4]
。
操作2->选择10。将其替换为5。
新数组= [5, 7, 5, 4]
。
操作3->选择7。将其替换为3。
新数组= [5,3,5,4]
。
总和= 17。
这就是我尝试过的
a,b= input().split(" ")
n=int(a)
k=int(b)
arr=list(map(int,input().split()))
arr.sort(reverse=True)
i=0
while k>0 and i<n:
if arr[i]<0:
i+=1
else:
arr[i]=arr[i]//2
k-=1
if max(arr)!=arr[i]:
i+=1
print(sum(arr),end="")
答案 0 :(得分:-1)
我可以看到除法运算符arr[i]=arr[i]**//**2
中的错字