| @@ -0,0 +1,24 @@ | |||
| import sys | |||
| from itertools import accumulate, cycle | |||
| from multiprocessing import Pool | |||
| def _next(ns, i): | |||
| g = cycle([n for n in [0, 1, 0, -1] for _ in range(i + 1)]) | |||
| next(g) # throw away one | |||
| return abs(sum(a * b for a, b in zip(ns, g))) % 10 | |||
| text = sys.stdin.read().strip() | |||
| ns = [int(n) for n in text] | |||
| with Pool() as pool: | |||
| for _ in range(100): | |||
| ns = pool.starmap(_next, [(ns, i) for i in range(len(ns))]) | |||
| print(''.join(str(c) for c in ns[:8])) | |||
| offset = int(text[:7]) | |||
| pending = [int(n) for n in (text * 10000)[offset:]][::-1] | |||
| for _ in range(100): | |||
| pending = [n % 10 for n in accumulate(pending)] | |||
| print(''.join(str(c) for c in pending[::-1][:8])) | |||