题目描述
给出一个正整数N和长度L,找出一段长度大于等于L的连续非负整数,他们的和恰好为N。答案可能有多个,我我们需要找出长度最小的那个。
例如 N = 18 L = 2:
5 + 6 + 7 = 18
3 + 4 + 5 + 6 = 18
都是满足要求的,但是我们输出更短的 5 6 7

解题思路:这题就是通过差值为1的等差数列求解,通过等差数列基本公式的推导可以得到等差数列首项a1 = (2N - (L-1)L) / (2 * N),而L的值是不能大于100的,所以可以直接求解L——100间有没有整数a1解,有的话直接输出就好了,超过100,直接输出No,注意输出的行末不能带有空格,下面是通过的Python代码

import math

N, L = map(int, input().split())
i = L
while i <= 100:
    a = (2 * N - i*(i - 1)) / (2 * i)
    if math.ceil(a) == a:
        for j in range(i- 1):
            print(int(a), end=" ")
            a += 1
        print(int(a))
        break
    i += 1
if i == 101:
    print("No")