|
- def decode(string, swap={'1': 1, '=': -2, '-': -1, '0': 0, '2': 2}):
- return sum(5 ** i * swap[c] for i, c in enumerate(string[::-1]))
-
-
- def base5(n):
- ns = []
- while n:
- ns.append(n % 5)
- n //= 5
- return ns[::-1]
-
-
- def encode(n, swap={1: '1', -2: '=', -1: '-', 0: '0', 2: '2'}):
- ms = []
- carry = 0
- for n in base5(n)[::-1]:
- n += carry
- if n > 2:
- carry, value = 1, n % 3 - 2
- else:
- carry, value = 0, n
- ms.append(swap[value])
- if carry:
- ms.append(swap[carry])
- return ''.join(ms[::-1])
-
-
- n = sum(map(decode, open(0).read().splitlines()))
- print(encode(n))
|