如何将(和)第一个元素添加到下一个n个元素,直到第一个元素变为零?
示例:
输入:
6 7 1 3 6
10
第一元素-> 6
a=第一元素=6
下一个元素到6是-> 7 -> 7+3 (添加三个元素是因为元素不需要超过X)
a=6-3=3
需要添加3到下一个元素。
到7的下一个元素是1 -> 1+3=4
a=3-3=0 (a(第一个元素)变为零)
所以我需要停止循环
所需输出
0 10 4 2 6
我试过了,但是我的代码没有将剩下的添加到下一个value.Is,我的逻辑是correct?.What犯了错误吗?
我的代码:
l=list(map(int,input().split()))
c=int(input())
ans=[]
for i in range(1,len(l)-1):
a=l[0]
l[i]+=a-(l[i]+a)%c
a-=(l[i]+a)%c
if l[i]==c:
i+=1
if a<=0:
break
print(l)
我的输出
[6, 10, 1, 3, 6]
发布于 2022-03-08 14:14:25
下面是适用于您的示例的一些内容:
numbers = [6, 7, 1, 3, 6]
total = 10
i = 1
while i < len(numbers) and numbers[0] != 0:
shift = min(total - numbers[i], numbers[0])
numbers[i] += shift
numbers[0] -= shift
i += 1
print(numbers)
小心点,如果你所需要的总数小于数字,它会减少数量,数量也会增加。
发布于 2022-03-08 14:35:12
首先,您的代码有一些问题。您可以使用(li+a)%c两次,但是li的值在两者之间会发生变化。另外,您永远不会更改l0的值,使其保持在6。
l=list(map(int,input().split()))
c=int(input())
ans=[]
for i in range(1,len(l)-1):
x = c-l[i]
if x < l[0]:
l[i] += x
l[0] -= x
else:
l[i] += l[0]
l[0] = 0
break
print(l)
您可以在还需要添加足够多的时候从l添加,如果没有,则添加剩余的内容并结束循环。
https://stackoverflow.com/questions/71396321
复制相似问题