차기 시장

면접 대비

시간 제한1초메모리 제한128 MB

요약
조약돌 전달 게임을 규칙대로 시뮬레이션해 모든 조약돌을 가진 후보의 번호를 출력한다.
난이도

보통10점 중 4점

유형
시뮬레이션, 구현
정답자
아직 제출이 없습니다

문제

게임스턴(Gameston) 마을의 가장 기이한 전통 중 하나는, 차기 시장조차 게임의 결과로 뽑는다는 것이다. 시장의 임기가 끝나갈 무렵, 현직 시장을 포함한 최소 세 명의 후보가 조약돌 게임을 벌이고, 그 승자가 차기 시장이 된다.

조약돌 게임의 규칙은 다음과 같다. 아래에서 nn은 참가한 후보의 수이다.

  • 준비물
    • 둥근 탁자, 그릇 하나, 그리고 충분한 양의 조약돌.
  • 시작
    • 그릇에 조약돌 몇 개를 넣는다. nn명의 후보는 00번부터 n−1n-1번까지 번호를 받아 둥근 탁자에 반시계 방향 순서로 앉는다. 게임을 시작할 때 그릇은 현직 시장, 즉 00번 후보에게 건네진다.
  • 한 번의 차례
    • 어떤 후보가 그릇을 건네받으면:
      • 그릇에 조약돌이 하나라도 있으면, 그 후보는 조약돌 하나를 꺼내 이미 손에 들고 있던 것들과 함께 가진다.
      • 그릇이 비어 있으면, 그 후보는 손에 들고 있는 조약돌 전부(있다면)를 그릇에 넣는다.
    • 두 경우 모두, 그 후보는 그릇을 오른쪽 다음 후보(즉 (i+1) mod n(i+1) \bmod n번 후보)에게 넘긴다. 승자가 결정될 때까지 이 과정을 반복한다.
  • 게임의 끝
    • 어떤 후보가 그릇에서 마지막 조약돌을 꺼내는 순간, 다른 어떤 후보도 조약돌을 가지고 있지 않다면 게임이 끝나고, 모든 조약돌을 손에 쥔 그 후보가 승자가 된다.

이 게임은 필요한 차례의 수가 매우 커질 수는 있어도 항상 유한한 차례 안에 끝난다는 것이 증명되어 있다.

입력

입력은 여러 개의 데이터셋으로 이루어진다. 각 데이터셋은 공백 하나로 구분된 두 정수 nn과 pp가 적힌 한 줄이며, nn은 (현직 시장을 포함한) 후보의 수, pp는 처음에 그릇에 넣는 조약돌의 총 개수이다. 3≤n≤503 \le n \le 50, 2≤p≤502 \le p \le 50이라고 가정해도 된다.

입력으로 주어지는 모든 데이터셋에서 게임은 1,000,000번의 차례 안에 끝난다.

입력의 끝은 공백 하나로 구분된 두 개의 00이 적힌 줄로 표시되며, 이 줄은 처리하지 않는다.

출력

각 데이터셋에 대해, 입력과 같은 순서로 승리한 후보의 번호를 한 줄에 하나씩 출력한다. 출력에는 그 밖의 어떤 문자도 나타나서는 안 된다.

예제3

  1. 예제 1

    입력
    3 2
    3 3
    3 50
    10 29
    31 32
    50 2
    50 50
    0 0
    
    예상 출력
    1
    0
    1
    5
    30
    1
    13
    
  2. 예제 2

    입력
    3 2
    0 0
    
    예상 출력
    1
    
  3. 예제 3

    입력
    3 3
    0 0
    
    예상 출력
    0