problem26.py 711 B

123456789101112131415161718192021222324252627
  1. #!/usr/bin/env python
  2. from decimal import getcontext, Decimal
  3. def findrec(d):
  4. getcontext().prec = d * 3
  5. dec = str(Decimal(1) / d)[2:]
  6. for l in xrange(d - 1, 0, -1):
  7. for offset in xrange(d):
  8. pivot = len(dec) - offset - l
  9. left = dec[pivot - l:pivot]
  10. right = dec[pivot:pivot + l]
  11. if left == right:
  12. if len(left) == 1 or len(set(left)) > 2:
  13. return dec[pivot - l:pivot]
  14. if __name__ == '__main__':
  15. longest = 0
  16. ld = None
  17. for d in xrange(2, 1000):
  18. rec = findrec(d)
  19. if rec and len(rec) > longest:
  20. longest, ld = len(rec), d
  21. print '%d (%d)' % (d, longest), rec