BOJ 4906 Musical Chairs
BOJ 4906 Musical Chairs
문제 내용
의 번호가 매겨져 있는 명의 사람이 번호 순서대로 원 모양으로 앉아 있습니다. 1번부터 시작하여 번호가 증가하는 방향으로 세어 번째 사람을 원에서 제거하는 것을 원에 한 명만 남을 때까지 반복합니다.
원에 남는 사람의 번호를 구하세요.
입력
여러 개의 테스트 케이스가 주어집니다. 각 테스트 케이스에 대해, 과 의 값이 한 줄에 순서대로 주어집니다. () 입력은 0 0으로 종료되며, 이 줄은 처리하지 않습니다.
모든 테스트 케이스의 의 합은 을 초과하지 않습니다.
출력
각각의 테스트 케이스에 대해, , , 그리고 정답을 한 줄에 출력합니다.
문제 풀이
스포일러
이 문제는 유명한 요세푸스 문제입니다.
사람의 번호를 0-based로 바꾸고 생각해 봅시다. 명이 있을 때 첫 턴에는 번 사람이 탈락하며, 보다 작은 번호를 가진 사람이 명, 큰 번호를 가진 사람이 명이 남습니다.
이제 명이 있을 때의 승자를 라고 하면, 이 과정을 역으로 진행하여 명이 있을 때의 승자의 번호를 구할 수 있습니다. 구체적으로 답은 다음과 같습니다.
- 이면 이 승자입니다.
- 이면 이 승자입니다.
이면 답은 0이므로, 이 과정을 에서부터 역순으로 진행할 수 있습니다. 테스트 케이스 별로 시간이 소요됩니다.
Last updated on