|
|
@@ -0,0 +1,38 @@ |
|
|
|
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]]) |