人生苦短,我选python
自己写的
from decimal import *
getcontext().prec = 20
def doubles(maxk, maxn):
d = Decimal(0)
for k in range(1,maxk+1):
for n in range(1,maxn+1):
d += (1)/Decimal((k*((n+1)**(2*k))))
print(float(d))
doubles(maxk = 10, maxn = 1000)
#结果:0.6921486500921955
给的实例运行时间:
最后提交一直超时。。。
然后就弱弱地看大神的代码去了(顺带看了眼评论区:
this is the ever easy ‘4 kyu’ problem i have seen)
。。。好尴尬
大神的(用了列表推导式)
def doubles(maxk, maxn):
return sum([ sum([ (n+1)**(-2*k) for n in range(1, maxn+1) ])/k for k in range(1, maxk+1) ])
print(doubles(maxk = 10, maxn = 1000))
结果:0.6921486500921933
运行时间:
好的吧,差别出来了,这才4个例子,就差了快两倍时间。
好的吧,才疏学浅,继续加油!!以后就尽量用列表推导式了(抱拳)。
ps:推荐文章:“Python|为什么列表推导式会更快”
https://www.jianshu.com/p/03f9dd662427