83 lines
1.6 KiB
Python
83 lines
1.6 KiB
Python
TESTING = False
|
|
inp = '9084194700940903797191718247801197019268'
|
|
|
|
|
|
def once(values, turnlist):
|
|
values = list(values)
|
|
for ai in reversed(range(len(values))):
|
|
bi = len(values) - ai - 1
|
|
|
|
diff = (values[bi] - values[ai]) % 10
|
|
|
|
if diff < 5:
|
|
turnlist[ai] += diff
|
|
values[ai] += diff
|
|
|
|
if values[ai] > 9:
|
|
if ai > 0:
|
|
values[ai - 1] += values[ai] // 10
|
|
values[ai] = values[ai] % 10
|
|
|
|
return values
|
|
|
|
|
|
def is_pal(s):
|
|
return s == s[::-1]
|
|
|
|
|
|
def get(values):
|
|
values = list(map(int, values))
|
|
|
|
turns = [0] * len(values)
|
|
|
|
while True:
|
|
new = once(values, turns)
|
|
|
|
if new == values:
|
|
break
|
|
|
|
values = new
|
|
|
|
if TESTING:
|
|
print('-----', *values)
|
|
|
|
for ai in reversed(range(len(values))):
|
|
bi = len(values) - ai - 1
|
|
|
|
if ai == bi:
|
|
pass
|
|
else:
|
|
av = int(values[ai])
|
|
bv = int(values[bi])
|
|
|
|
diff = bv - av
|
|
|
|
if diff == 5:
|
|
if bi > 0 and turns[bi - 1] > 0:
|
|
turns[bi] += 5
|
|
turns[bi - 1] -= 1
|
|
values[bi] = (values[bi] + 5) % 10
|
|
else:
|
|
turns[ai] += 5
|
|
values[ai] += 5
|
|
|
|
return turns, values
|
|
|
|
|
|
if not TESTING:
|
|
inp = input()
|
|
else:
|
|
print('input', *inp)
|
|
|
|
turns, res = get(inp)
|
|
|
|
if TESTING:
|
|
print()
|
|
print('reslt', *res)
|
|
print('rturn', *res[::-1])
|
|
print(is_pal(res))
|
|
print()
|
|
print('turns', *turns)
|
|
|
|
print(sum(turns))
|