比这篇新的文章: Project Euler-28
比这篇旧的文章: 某黑白棋代码

Project Euler-6

语言: Python, 标签: python ProjectEuler 2008/10/13发布 1年前更新
作者: sofoot, 点击1289次, 评论(4), 收藏者(0), , 打分:

背景
主题: 字体:
Python语言: Project Euler-6
1 a=range(101)
2 print sum([x*y for x in a for y in a if x!=y])


所有评论,共4条:( 我也来说两句)

1
vilinov 1年前 回复
0
0
还是没明白最后一行代码,解释器是如何运作的
2
sofoot 1年前 回复
0
2
先说题目本身,题目是要求1-100所有整数的“和的平方”与“平方的和”的差,也就是求(1+2+……+100)**2-(1*1+2*2+……+100*100)。根据公式,这个结果等于2*(1*2+1*3+……+99*100),也就是说,等于所有交叉项的2倍。程序中,第二行,print是输出,这个不用说了。sum是求一个list的和,也不用说了。关键是[]中的内容。这个是python的map与filter。如果对数学中集合的写法比较熟悉的话,这个就比较容易明白了。这个list是说这么一个集合{x*y|对于所有的x属于a,y属于a,并且x不等于y}。
3
vilinov 9个月前 回复
0
0
@sofoot:
其实。。。
n=100
print (3*n**4+2*n**3-3*n*n-2*n)/12
4
光风 3个月前 回复
0
0
a-range(101)
print sum(map(lambda x[0]*x[1],itertools.permutations(a,2)))
本质就是一个排列问题

发表评论

注册登录后再发表评论