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)))