1. 首先计算公式,假设k个连续正整数之和为sumk,第一个正整数为x,则sumk = x + (x+1) + ... + (x+k-1) = kx + k(k-1)/2, 则x = (n - (k*(k-1)/2))/k。
  2. 由于x必须是正整数,所以由给定的n和k计算得到的x如果为负数的话,则不存在满足条件的x,返回No;如果x为正数,判断一下x是否为整数,如果不是的话,将k加1,继续计算新的x,是的话,则找到了符合等式的正整数x,此时的k也是最小的。
  3. 当输出结果时,还要判断一下k是否大于100,如果大于100,仍然要输出No,否则可以正常输出k个连续正整数。
def solve(n,l):
    k = l
    while k <= 100:
       tempx = (n - (k*(k-1)/2))/k
       if tempx < 0:
            print('No')
            break
       elif tempx%1 == 0:
            break
       else:
            k += 1
    if tempx >= 0:
        if k <= 100:
            result = []
            for i in range(k):
                result.append(int(tempx+i))
            print(' '.join(str(i) for i in result))
        else:
            print('No')

if __name__ == '__main__':
    rec = list(map(int, input().split(' ')))
    result = solve(rec[0],rec[1])