0341 Golomb序列
* * * *
拉格朗日计划
* * * *
Golomb序列

Golomb序列是由自然数组成的单调不降且n出现恰好$G(n)$次的序列,这样的序列唯一。

从$n=1$,它的前15项分别是$1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 6,\ldots$

可以验证$G(1000)=86, G(10^6)=6137$以及$\sum_{n=1}^{999}G(n^3)=153506976$。

求$\sum_{n=1}^{10^6-1}G(n^3)$。

本题难度:



解答

根据OEIS A001462OEIS A001463中的信息,Golomb序列是分段常值的序列,每个值最后出现的位置由该序列的部分和决定。

因此计算该序列的部分和,并记录每个值的长度。再遍历n,再利用这一信息就很容易定位到$G(n^3)$并找出其值。

最终结果是$56098610614277014$。

b=[1,2,4,6,9,12]
s=1*1+2*2+3*2+4*3+5*3
i=3
m=5
while s < 10**18:
    for x in range(b[i-1],b[i]):
        for z in range(i):
            s+=len(b)*x
            b.append(x+b[m])
            m+=1
    i+=1

r=s=i=1
for n in range(2,10**6):
    while s < n**3:
        s+=(b[i+1]-b[i])*(i+1)
        i+=1
    r+=(n**3-(s-(b[i]-b[i-1])*i)-1)/i+b[i-1]

print r