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

序列和

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

相关推荐

挣K存W养DOG:我记得好多人说这个公司就是白嫖方案的,现在有大体方案要让你给他展示实现细节了,也是无敌了
点赞 评论 收藏
分享
03-12 15:34
已编辑
北京邮电大学 Java
呓语0613:老哥你这黑马点评改造是在哪里看的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务