problem39.py 734 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #!/usr/bin/env python
  2. from math import sqrt
  3. def euclid(m, n):
  4. mq = m ** 2
  5. nq = n ** 2
  6. return mq - nq, 2 * m * n, mq + nq
  7. def hist(maxp):
  8. hist = [set() for i in xrange(maxp+1)]
  9. for m in xrange(2, int(sqrt(maxp))):
  10. for n in xrange(1, m):
  11. a, b, c = oa, ob, oc = euclid(m, n)
  12. k = 1
  13. while True:
  14. p = a + b + c
  15. if p > maxp:
  16. break
  17. hist[p].add(tuple(sorted((a, b))) + (c,))
  18. k += 1
  19. a += oa
  20. b += ob
  21. c += oc
  22. return hist
  23. maxp = maxs = 0
  24. for p, s in enumerate(hist(1000)):
  25. if len(s) >= maxs:
  26. maxp, maxs = p, len(s)
  27. print maxp