第9题:
Find the only Pythagorean triplet, {a, b, c}, for which a + b+ c = 1000.
求出某三个数,满足a**2+b**2==c**2,且a+b+c=1000
- # a+b+c = 1000, 同时满足 a平方加b平方等于c平方
- import time
- start = time.time()
- def test():
- for a in xrange(1,334):
- for b in xrange(a+1,500-a/2):
- if (1000-a)*(1000-b) == 500000:
- c = 1000 - a -b
- if a**2+b**2==c**2:
- print a*b*c,a,b,c
- return
- def test1():
- for a in xrange(1,334):
- if not 500000%(1000-a):
- b = 1000-500000/(1000-a)
- c = 1000-a-b
- if a**2+b**2 == c**2:
- print a*b*c,a,b,c
- return
- test()
- print time.time()-start
- start = time.time()
- test1()
- print time.time()-star
a**2+b**2 = (1000-a-b)**2
= 1000**2 -2000(a+b)+2ab+a**2+b**2
可得: (1000-a)(1000-b) = 500*1000
test1的时间复杂度是最小的.