|
发表于 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分钟 |
|