python新手进阶题

现在有一个非负数组h1,h2.....hn,最多可以对它进行k次以下操作:h1每加1,hn-1,即将hn的值转移1个单位到第一个数。若hn为0,继续对hn的前一个数字进行操作,直至操作k次,最终保证第一个数最大。输出操作后的数组

输入 n k  

       h1 h2  

输出 m1 m2

示例:

输入 2   7  

        1   0  

输出 1   0

输入 3  10  

        10   9   9  

输出 20   8   0

 或者这样代码更好理解一些

 

n, k = input().strip().split()
n = int(n)
k = int(k)
lst = [int(v) for v in input().strip().split()]
t = len(lst)-1
while k>0 and t>0:
    if lst[t]==0:
        t -= 1
        continue
    lst[t] -=1
    lst[0] +=1
    k -= 1

print(*lst,sep=" ")

 

n, k = input().strip().split()
n = int(n)
k = int(k)
lst = [int(v) for v in input().strip().split()]
t = len(lst)-1
for i in range(k):
    while lst[t]==0:
        t -= 1
        if t==0:
            break
    if t==0:
        break
    lst[t] -=1
    lst[0] +=1

print(*lst,sep=" ")

如果对你有帮助,可以点击我这个回答右上方的【采纳】按钮,给我个采纳吗,谢谢。
 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632