project euler problem14
2009-09-23 11:25
309 查看
P=lambda n: n %2 ==0 and n/2 or (3*n+1)
dic=dict()
dic[1]=1
i=2
Max=1000000
while i<=Max:
p=i
cnt=0
while p !=1:
if dic.has_key(p):
dic[i] =dic[p]+cnt
break
else :
p=P(p)
cnt +=1
else:
dic[i]=cnt
i +=1
ls=sorted(dic.items(),key=lambda d:d[1])
print ls[Max-1]
the result is 837799
思路:如果N没有计算过,那么循环,直到某个数p已经计算过,令dic
=dic[p]+cnt ; 如果p=1,将dic
=cnt
dic=dict()
dic[1]=1
i=2
Max=1000000
while i<=Max:
p=i
cnt=0
while p !=1:
if dic.has_key(p):
dic[i] =dic[p]+cnt
break
else :
p=P(p)
cnt +=1
else:
dic[i]=cnt
i +=1
ls=sorted(dic.items(),key=lambda d:d[1])
print ls[Max-1]
the result is 837799
思路:如果N没有计算过,那么循环,直到某个数p已经计算过,令dic
=dic[p]+cnt ; 如果p=1,将dic
=cnt
相关文章推荐
- Project Euler Problem 14
- Project Euler Problem 14 Longest Collatz sequence
- project euler problem 14
- Project Euler problem 14
- http://projecteuler.net/problem=14 [Answer:837799]
- project euler Problem 36
- Project Euler Problem 57
- Euler Project Problem 188
- Project Euler Problem 27小结
- 斐波那契数列偶数项求和(Project Euler Problem 2)
- Project Euler Problem 17
- Project Euler problem 6
- Project Euler problem 15
- Project Euler problem 21
- Project Euler problem 36
- Project Euler problem 42
- Project Euler problem 50
- Project Euler Problem 9: Special Pythagorean triplet
- Project Euler Problem 36
- Project Euler Problem 75