|
|
〇〇 发表于 2021-6-13 20:18
速度比较>>>> def S2(n):.... x=int(ms.log(n,2)+1).... s=[[]].... s.append([1]).... s1=5.... j=3. ...
左移一位,就不用单独处理1,2了
def S3(n):
x=int(ms.log(n,2)+1)
s=[[1]]
s1=1
j=2
for i in range(1,x+1):
#c=[i+1 for i in s[i-1]]
s.append(s[i-1]+list(map(lambda x:1+x,s[i-1])))
for i in s:
s1+=(i*j)**2
j+=1;
if(j>n):return s1
def t2(x):
t=tm.time()
print(S3(x),tm.time()-t)
t=tm.time()
print(S2(x),tm.time()-t)
>>>> t2(10**6)
38208449849768505328 1.0776209831237793
38208449849768505328 1.0938520431518555
>>>> t2(10**7)
48434107237907202397536 11.120742797851562
48434107237907202397536 11.012107133865356 |
|