【OD统一考试B卷 | 求解连续数列
题目描述
已知连续正整数数列{K}=K1,K2,K3…Ki的各个数相加之和为S,i=N (0<S<100000, 0<N<100000), 求此数列K。
输入描述
输入包含两个参数,1)连续正整数数列和S,2)数列里数的个数N。
输出描述
如果有解输出数列K,如果无解输出-1。
用例
输入 | 525 6 |
输出 | 85 86 87 88 89 90 |
说明 | 无 |
题目解析
为了求解连续正整数数列的和,可以使用序列的总和S和长度N计算出中间值,S / N即为中间值。例如,525 / 6 = 87.5,因为序列长度为6,所以87.5实际上是87和88的中间值。
又如,9 / 3 = 3,因为9是2、3、4序列的和,而该序列的长度为奇数,因此3就是该序列的中间值。
有了中间值后,可以根据连续正整数数列的半径计算出序列的两个边界值。如果左边界小于或等于0,则直接返回-1,否则计算得到的边界值即为符合要求的边界。最后,返回在两个边界值之间的数值即可。
C+
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
华为OD机试刷题 文章被收录于专栏
华为OD机试刷题记录机考算法题库,帮助你上岸华为。提供C++/Java、JavaScript、Python四种语言的解法。