그리고 하나가 남았다

면접 대비

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

요약
원형으로 배열된 돌들을 정해진 시작점과 간격으로 제거해 나가는 조세퍼스 유형 게임에서 마지막에 남는 돌의 번호를 각 테스트케이스마다 구합니다.
난이도

쉬움10점 중 3점

유형
시뮬레이션, 큐, 수학
정답자
아직 제출이 없습니다

문제

돌 치우기 게임을 해 보자.

처음에 그림 1과 같이 11부터 nn까지 번호가 매겨진 nn개의 돌이 시계 방향으로 원을 이루어 놓여 있다. 그리고 두 수 kk와 mm이 주어진다. 이 상태에서 돌이 하나만 남을 때까지 아래 규칙에 따라 돌을 하나씩 치운다.

  • 스텝 1: 돌 mm을 치운다.
  • 스텝 ii (i≥2i \ge 2): 스텝 (i−1)(i-1)에서 치운 돌의 위치에서 시작하여, 남은 돌 중 시계 방향으로 kk번째에 있는 돌을 치운다. 즉, k−1k-1개의 돌을 건너뛴 뒤에 있는 돌을 치우며, 이미 치운 돌은 건너뛰는 횟수에 세지 않는다.

스텝 1, 스텝 2, 스텝 3, ...을 순서대로 실행하여 돌이 하나만 남을 때까지 반복하면, 그 마지막으로 남은 돌이 게임의 답이 된다.

예를 들어 그림 1에서와 같이 n=8n = 8, k=5k = 5, m=3m = 3인 경우 답은 11이다.

그림 1: 게임 예제

  • 초기 상태: 8개의 돌이 시계 방향으로 놓여 있다.
  • 스텝 1: m=3m = 3이므로 돌 3이 치워진다.
  • 스텝 2: 3에서 시작하고 k=5k = 5이므로 돌 4, 5, 6, 7 (총 4개)을 건너뛰고 돌 8을 치운다.
  • 스텝 3: 8에서 시작하여 돌 1, 2, 4, 5를 건너뛰고 돌 6을 치운다. 돌 3은 이미 치워졌으므로 무시되어 건너뛰는 횟수에 포함되지 않음에 주의한다.
  • 스텝 4~7: 돌이 하나만 남을 때까지 계속한다.
  • 마지막으로 남은 돌이 1이므로 답은 1이다.

입력

입력은 여러 개의 데이터 줄로 이루어지며, 각 데이터 줄은 다음과 같이 세 개의 수로 이루어진다.

n k m

마지막 데이터 줄 다음에는 세 개의 00으로 이루어진 줄이 온다. 각 수는 다음 범위를 만족한다.

2≤n≤100002 \le n \le 10000, 1≤k≤100001 \le k \le 10000, 1≤m≤n1 \le m \le n

데이터 줄의 개수는 100보다 작다.

출력

각 데이터 줄에 대해 마지막으로 남은 돌의 번호를 출력한다.

예제2

  1. 예제 1

    입력
    8 5 3
    100 9999 98
    10000 10000 10000
    0 0 0
    
    예상 출력
    1
    93
    2019
    
  2. 예제 2

    입력
    5 2 1
    0 0 0
    
    예상 출력
    2