首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将(和)第一个元素添加到下一个n个元素直到第一个元素变为零

如何将(和)第一个元素添加到下一个n个元素直到第一个元素变为零
EN

Stack Overflow用户
提问于 2022-03-08 14:03:14
回答 2查看 117关注 0票数 1

如何将(和)第一个元素添加到下一个n个元素,直到第一个元素变为零?

示例:

输入:

代码语言:javascript
运行
复制
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(第一个元素)变为零)

所以我需要停止循环

所需输出

代码语言:javascript
运行
复制
0 10 4 2 6 

我试过了,但是我的代码没有将剩下的添加到下一个value.Is,我的逻辑是correct?.What犯了错误吗?

我的代码:

代码语言:javascript
运行
复制
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)

我的输出

代码语言:javascript
运行
复制
[6, 10, 1, 3, 6]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-08 14:14:25

下面是适用于您的示例的一些内容:

代码语言:javascript
运行
复制
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)

小心点,如果你所需要的总数小于数字,它会减少数量,数量也会增加。

票数 1
EN

Stack Overflow用户

发布于 2022-03-08 14:35:12

首先,您的代码有一些问题。您可以使用(li+a)%c两次,但是li的值在两者之间会发生变化。另外,您永远不会更改l0的值,使其保持在6。

代码语言:javascript
运行
复制
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添加,如果没有,则添加剩余的内容并结束循环。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71396321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档