您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

37 行
1006B

  1. import re
  2. import sys
  3. from itertools import product
  4. text = sys.stdin.read()
  5. mem = {}
  6. idem = {'0': '0', '1': '1'}
  7. for line in text.splitlines():
  8. typ, val = line.split(' = ')
  9. if typ.startswith('mask'):
  10. mask = val
  11. if typ.startswith('mem'):
  12. pos = int(typ[4:-1])
  13. known = f'{int(val):b}'.zfill(len(mask))
  14. string = ''.join(idem.get(c, known[i]) for i, c in enumerate(mask))
  15. mem[pos] = int(string, 2)
  16. print(sum(mem.values()))
  17. mem = {}
  18. idem = {'X': 'X', '1': '1'}
  19. for line in text.splitlines():
  20. typ, val = line.split(' = ')
  21. if typ.startswith('mask'):
  22. mask = val
  23. elif typ.startswith('mem'):
  24. known = f'{int(typ[4:-1]):b}'.zfill(len(mask))
  25. string = ''.join(idem.get(c, known[i]) for i, c in enumerate(mask))
  26. for gen in map(iter, product('01', repeat=string.count('X'))):
  27. tmp = re.sub('X', lambda m: next(gen), string)
  28. pos = int(tmp, 2)
  29. mem[pos] = int(val)
  30. print(sum(mem.values()))