用Python解Project Euler (#53)
我正在学习Python,所以我在做一些Project Euler的问题。我不确定这是Python的问题,还是我自己哪里搞错了,但我在第53题上似乎得到了错误的答案。这里有个链接可以查看这个问题 http://projecteuler.net/index.php?section=problems&id=53
这是我的代码:
from math import factorial
def ncr(n,r):
return (factorial(n)/(factorial(r)*factorial(n-r)))
i = 0
for x in range(1,100):
for y in range(0,x):
if(ncr(x,y) > 1000000):
i=i+1
print i
我得到了3982,这显然是错误的答案。我是不是在Python上做错了什么?
5 个回答
2
注意,n的值必须大于等于1并且小于等于100。目前你的n的范围是从1到99。你也可以使用xrange。
from math import factorial
def ncr(n,r):
return (factorial(n)/(factorial(r)*factorial(n-r)))
i = 0
for x in range(1,101):
for y in range(1,x+1):
if(ncr(x,y) > 1000000):
i=i+1
print i
4
我觉得你的代码是对的,不过你应该把x的范围设置到100,包括100在内。所以你应该使用
for x in range(1,101):
希望这能帮到你。欧拉真棒!
10
range( a, b)
这个函数生成的数字范围是不包括 b
的。