유리수 수열 3

1/1을 뿌리로 하고 왼쪽 자식이 p/(p+q), 오른쪽 자식이 (p+q)/q인 이진 트리를 너비 우선 순서로 읽었을 때 N번째 유리수를 구한다.

보통5트리수학정수론이분 탐색면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

양의 유리수를 라벨로 갖는 무한 완전 이진 트리를 다음과 같이 정의한다.

  • 루트의 라벨은 1/11/1이다.
  • 라벨이 p/qp/q인 노드의 왼쪽 자식의 라벨은 p/(p+q)p/(p+q)이다.
  • 라벨이 p/qp/q인 노드의 오른쪽 자식의 라벨은 (p+q)/q(p+q)/q이다.

트리의 위쪽 부분은 아래 그림과 같다.

유리수 라벨을 갖는 이진 트리의 위쪽 부분

이 트리를 레벨 순서로, 즉 너비 우선으로 각 레벨의 왼쪽 노드부터 읽으면 유리수 수열 FF를 얻는다.

F(1)=1/1F(1) = 1/1, F(2)=1/2F(2) = 1/2, F(3)=2/1F(3) = 2/1, F(4)=1/3F(4) = 1/3, F(5)=3/2F(5) = 3/2, F(6)=2/3,F(6) = 2/3, \dots

인덱스 NN이 주어지면 F(N)F(N)을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 데이터 집합의 개수 PP가 주어진다. (1P10001 \le P \le 1000)

다음 PP개 줄에 데이터 집합이 한 줄에 하나씩 주어진다. 각 줄은 데이터 집합 번호 KK와 구할 원소의 인덱스 NN으로 이루어진다. (1N21474836471 \le N \le 2147483647) 데이터 집합은 주어진 순서대로 11번부터 PP번까지 번호가 매겨져 있다.

각 데이터 집합은 서로 독립이고, 모두 같은 방식으로 처리한다.

출력

각 데이터 집합마다 한 줄씩 출력한다. 데이터 집합 번호 KK, 공백 한 칸, F(N)F(N)의 분자, 슬래시 문자 /, F(N)F(N)의 분모를 이 순서로 이어서 출력한다. 슬래시 앞뒤에는 공백을 넣지 않는다.

분자와 분모가 모두 32비트 부호 없는 정수 범위를 넘지 않도록 입력이 주어진다.