You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2 jaren geleden
1234567891011121314151617181920212223242526272829
  1. def decode(string, swap={'1': 1, '=': -2, '-': -1, '0': 0, '2': 2}):
  2. return sum(5 ** i * swap[c] for i, c in enumerate(string[::-1]))
  3. def base5(n):
  4. ns = []
  5. while n:
  6. ns.append(n % 5)
  7. n //= 5
  8. return ns[::-1]
  9. def encode(n, swap={1: '1', -2: '=', -1: '-', 0: '0', 2: '2'}):
  10. ms = []
  11. carry = 0
  12. for n in base5(n)[::-1]:
  13. n += carry
  14. if n > 2:
  15. carry, value = 1, n % 3 - 2
  16. else:
  17. carry, value = 0, n
  18. ms.append(swap[value])
  19. if carry:
  20. ms.append(swap[carry])
  21. return ''.join(ms[::-1])
  22. n = sum(map(decode, open(0).read().splitlines()))
  23. print(encode(n))