题解 | #序列和#利用相同最短长度数字间的等差关系
序列和
https://www.nowcoder.com/practice/46eb436eb6564a62b9f972160e1699c9
N,L=map(int,input().split(" ")) base_seq=list(range(L)) seq=[] while(sum(base_seq)<=N and L<=100): diff=N-sum(base_seq) if(diff%L==0): seq=[base_seq[i]+int(diff/L) for i in range(L)] break else: base_seq.append(L) L=L+1 if(len(seq)): print(*seq) else: print("No")
解题思路:针对一个整数N,如果在给定的L范围内有长度为L'的最短序列符合要求,则一定满足N-(L'-1)*L'/2能被L'整除,且商为m,其中被减数(L'-1)*L'/2是从0开始到L'-1的L'个非负整数序列之和,因此待输出的序列就是[0,1,...,L'-1]中的每个元素加m,即[m,m+1,...,L'+m-1]
#23届找工作求助阵地#