题解 | #序列和#利用相同最短长度数字间的等差关系

序列和

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届找工作求助阵地#
全部评论

相关推荐

对空六翼:你真幸运,碰见这么好的人,不像我,秋招的时候被室友骗进cx了
实习好累,可以辞职全力准...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务