09_marbles.py 631 B

1234567891011121314151617181920212223
  1. #!/usr/bin/env python3
  2. import sys
  3. from collections import deque
  4. from itertools import cycle
  5. def play(nplayers, last):
  6. scores = [0] * nplayers
  7. circle = deque([0])
  8. for marble, player in zip(range(1, last + 1), cycle(range(nplayers))):
  9. if marble % 23 == 0:
  10. circle.rotate(7)
  11. scores[player] += marble + circle.pop()
  12. circle.rotate(-1)
  13. else:
  14. circle.rotate(-1)
  15. circle.append(marble)
  16. return max(scores)
  17. nplayers, lastmarble = map(int, sys.stdin.readline().split()[::6])
  18. print(play(nplayers, lastmarble))
  19. print(play(nplayers, lastmarble * 100))