This repository has been archived on 2026-05-22. You can view files and clone it, but cannot push or open issues or pull requests.
Files
ICPC-2017/solutions/palindrome.py

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))