|
1234567891011121314151617181920212223242526272829303132333435363738 |
- import sys
-
-
- def play(start, cycles):
- lim = len(start)
- cur = start[0]
- ns = [None for _ in range(lim + 1)]
-
- for a, b in zip(start, start[1:] + start[:1]):
- ns[a] = b
-
- for _ in range(cycles):
- a = ns[cur]
- b = ns[a]
- c = ns[b]
-
- dest = (cur - 1) or lim
- while dest in (a, b, c):
- dest = (dest - 1) or lim
-
- ns[dest], ns[c], ns[cur] = a, ns[dest], ns[c]
- cur = ns[cur]
-
- return ns
-
-
- text = sys.stdin.read().strip()
- ns = [int(n) for n in text]
-
- ordering = play(ns, 100)
- sol = [1]
- for _ in range(len(ordering) - 2):
- sol.append(ordering[sol[-1]])
- print(''.join(str(n) for n in sol[1:]))
-
- ns.extend(n + 1 for n in range(len(ns), 1_000_000))
- ordering = play(ns, 10_000_000)
- print(ordering[1] * ordering[ordering[1]])
|