题解 | 单组_spj判断数组之和

单组_spj判断数组之和

https://www.nowcoder.com/practice/da783089da3b4a3188d240e1b7ac4b23

import sys

for line in sys.stdin:
    a = line.split()
    n =int(a[0]) 
    m=int(a[1])
    arr=[1]*n   # 每个元素至少为1
    # 余量
    k= m-n 
    base =k//n # 整数部分  平均分配到每个元素
    for i in range(0,n):
        arr[i]+=base
    r =k%n  # 余数分配到[0:r]每个元素
    print()
    for i in range (0,r):
        arr[i]+=1
    
    for  it in arr:
        print(it)
    



方法思路
‌初始构造‌:每个元素至少为1,这样初始和为n。剩下的余量k = m - n需要分配到各个元素中。
‌均匀分配‌:将余量k分成两部分,一部分是均匀分配的部分base = k // n,另一部分是余数r = k % n。
‌处理余数‌:将余数r分配到前r个元素,每个元素增加1。这样可以保证所有元素的和正好为m。
解决代码
python
Copy Code
n, m = map(int, input().split())
k = m - n
base = k // n
remainder = k % n
result = [1 + base] * n
for i in range(remainder):
    result[i] += 1
print(' '.join(map(str, result)))

#技术岗笔试题求解#
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务