|
发表于 2017-4-11 21:43:42
|
显示全部楼层
先贴上我的代码,因为答案还在跑。。。
输入50个数字太累了,我就随机生成了,验证过代码,大家帖出来的和我这个跑的结果是一样的,所以代码准确性没问题,就等50--2000万跑完看下时间吧import random,time
time1=time.time()
n=50
k=20000000
c=[]
#c=[1,2,3,4,5]
for i in range(n):
c.append(random.randint(1,100))
cs=[1 if i==0 else 0 for i in range(n+1)]
ta=[]
for j in range(n+1):
for i in range(n-j):
cs[i+1]+=cs[i]
ta.append(cs[-1])
del cs[-1]
ta[0]+=ta[-1]
del ta[-1]
k_n=k//n
kn=k%n
for i in range(k_n):
cc=c.copy()
for j in range(n):
xx=0
for k in range(n):
xx=xx+(cc[k]*ta[k])%100
c[j]=xx%100
cc=cc[1:]+cc[:1]
for i in range(kn):
c.append(c[0])
for j in range(n):
c[j]=(c[j]+c[j+1])%100
del c[-1]
print(c,time.time()-time1)
5分钟了还没出来。。。。测试的时候有一次只有300秒多一点诶。。。 RESTART: C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\test.py
[32, 0, 46, 26, 39, 61, 56, 9, 2, 51, 8, 61, 14, 49, 22, 18, 14, 67, 0, 74, 91, 49, 57, 79, 57, 57, 0, 71, 76, 39, 36, 31, 9, 2, 1, 8, 11, 14, 24, 22, 43, 39, 92, 0, 99, 41, 74, 57, 29, 7] 358.1024820804596
>>>
不知道是不是因为在操作电脑,比之前测试多跑了将近1分钟 |
|