라운드 로빈
면접 대비시간 제한1초메모리 제한128 MB
원을 따라 T번씩 차례를 진행해 마지막 차례인 탈락자를 제거하고 남은 횟수가 같아지면 인원과 횟수를 구합니다.
- 난이도
쉬움10점 중 3점
- 유형
- 시뮬레이션
- 정답자
- 아직 제출이 없습니다
문제
명이 정해진 순서대로 앉아 차례를 하나씩 치른다. 마지막 사람 다음은 다시 첫 번째 사람이라, 차례는 원을 그리며 이어진다. 참가자는 각자 자기가 치른 차례 횟수를 센다.
게임은 여러 라운드로 이어진다. 한 라운드에서 차례는 정확히 번 진행되고, 라운드가 끝나면 마지막 차례를 치른 참가자가 게임에서 빠진다. 그 시점에 남은 참가자의 횟수가 모두 같으면 게임이 끝난다. 같지 않으면 방금 빠진 참가자의 바로 다음 사람부터 시작해 번짜리 라운드를 한 번 더 진행한다.
남은 참가자가 한 명이면 비교할 상대가 없으므로 횟수가 모두 같은 것으로 보고 게임이 끝난다.
, 로 시작하는 경우를 따라가 보자. 참가자를 순서대로 A, B, C, D, E라 하고, 횟수는 모두 0에서 시작한다.
A부터 차례가 17번 돌아간다. 마지막 17번째 차례는 B가 치른다.
B가 게임에서 빠지고, 다음 차례는 C에게 넘어간다.
C부터 17번을 더 진행하면 A, D, E는 4번씩 늘고 C는 마지막 차례까지 포함해 5번 는다.
C가 빠진다. 남은 횟수가 모두 같지는 않으므로 D부터 새 라운드를 시작한다.
D부터 시작한 17번의 차례는 E에서 끝난다. A는 5번, D와 E는 6번씩 늘어난다.
E가 빠진다.
남은 두 사람의 횟수가 13으로 같으므로 게임이 끝난다. 게임을 끝낼지 판단할 때 E의 횟수는 보지 않는다.
입력
입력은 데이터 집합 하나 이상으로 이루어진다. 데이터 집합마다 정수 과 가 공백을 사이에 두고 한 줄에 주어진다. ()은 처음 참가자 수이고, ()는 한 라운드에서 진행되는 차례 횟수다. 마지막 데이터 집합 다음 줄에는 하나만 주어진다.
출력
데이터 집합마다 한 줄에 두 정수 와 를 공백으로 구분해 출력한다. 게임이 끝난 시점에 는 게임에 남아 있는 참가자 수이고, 는 그들이 공통으로 가진 차례 횟수다.