무한 유리수 트리
시간 제한1초메모리 제한256 MB
기약분수가 주어지면 칼킨-윌프 트리의 레벨 순서에서 바로 다음에 오는 분수를 출력합니다.
문제
무한 유리수 트리는 완전 이진 트리이며 다음과 같이 정의된다.
- 루트는 이다.
- 의 왼쪽 자식은 이다.
- 의 오른쪽 자식은 이다.
첫 세 층은 맨 위가 , 그 아래가 와 , 그 아래가 , , , 이다.
이 트리를 레벨 오더로, 즉 위층부터 한 층씩 훑으면서 같은 층에서는 왼쪽에서 오른쪽으로 훑어 나열하면 유리수 수열 을 얻는다. 앞의 몇 항은 , , , , , 이다.
기약분수 가 주어지면 이 수열에서 바로 다음에 오는 수를 구한다. 즉 일 때 을 출력한다.
입력
첫 줄에 테스트 케이스의 수 가 주어진다. ()
다음 개의 줄에는 각각 테스트 케이스의 번호와 기약분수 하나가 공백으로 구분되어 주어진다.
기약분수는 항상 p/q 꼴이고 그 안에 공백은 없다. 는 분자, 는 분모이다.
와 는 서로소이며 을 만족한다. 주어지는 분수는 항상 트리에 나타나는 값이다.
출력
각 테스트 케이스마다 테스트 케이스의 번호와 답을 공백으로 구분해 한 줄에 출력한다.
답이 되는 기약분수는 입력과 같은 분자/분모 꼴로 쓰고, 사이에 공백을 두어서는 안 된다.
모든 테스트 케이스에서 답의 분자와 분모는 32비트 정수 범위를 넘지 않는다.