题解 | 单组_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)))#技术岗笔试题求解#