Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """puzzle from Labyrint van Occam
- """
- def extend(number, length):
- """given a steady square number with length add extra digit"""
- f = 10 ** length
- f10 = 10 * f
- for digit in range(10):
- cand = f * digit + number
- if cand == pow(cand, 2, f10):
- return cand
- def make_long(number, N):
- """N: desired length of number"""
- for i in xrange(1, N):
- number = extend(number, i)
- return number
- def make_long5(N):
- """N: desired length of number
- simply square number and add digit i+1 to number (or
- calculate number**2 % 10**i+1)
- """
- number = 5
- p = 10
- for i in xrange(1, N):
- p *= 10
- number = (number * number) % p
- return number
- NEXT6 = dict(zip("3710926485",[int(s) for s in "7390184625"]))
- def make_long6(N):
- """N: desired length of number
- """
- number = 6
- p = 1
- for i in xrange(1, N):
- p *= 10
- n = NEXT6[str(number * number)[-i-1]]
- number += n * p
- return number
- N = 100
- N5 = make_long5(N)
- N6 = 10 ** N + 1 - N5
- print "{0:d}: {1:s}".format(5, str(N5).zfill(N))
- print "{0:d}: {1:s}".format(6, str(N6).zfill(N))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement