새트리
면접 대비시간 제한1초메모리 제한128 MB
기약분수가 주어질 때 유클리드 알고리즘과 비슷한 방식으로 버드 트리에서 그 분수까지의 L, R 경로를 구한다.
문제
새트리(Bird tree)는 무한 이진 트리입니다. 각 노드에는 양의 유리수가 하나씩 들어 있고, 루트 노드에는 이 들어 있습니다.
트리 전체를 bird라고 할 때, 다음 두 연산을 정의합니다.
- : 트리에 들어 있는 모든 분수에 을 더해서 얻는 트리
- : 트리에 들어 있는 모든 분수를 역수로 뒤집어서 얻는 트리
새트리는 재귀적으로 정의됩니다. 루트에는 이 있고, 루트의 왼쪽 서브트리는 이며 오른쪽 서브트리는 입니다. 즉, 왼쪽 서브트리는 새트리 전체의 모든 분수 를 로 바꾼 트리이고, 오른쪽 서브트리는 모든 분수 를 로 바꾼 트리입니다.
놀랍게도 이 트리에는 모든 양의 유리수가 정확히 한 번씩 나타납니다. 따라서 모든 기약분수는 루트에서 그 노드까지 가는 경로가 유일합니다. 경로는 왼쪽 자식으로 내려갈 때 , 오른쪽 자식으로 내려갈 때 로 나타냅니다. 예를 들어 는 경로 로 표현됩니다.
기약분수가 주어졌을 때, 루트에서 그 분수가 있는 노드까지 가는 경로를 과 로 출력하는 프로그램을 작성하세요.
입력
첫째 줄에 기약분수가 꼴로 주어집니다. 여기서 는 분자, 는 분모이며 문자 /로 구분됩니다. 와 가 동시에 인 경우는 없고, 을 만족합니다. () 경로의 길이는 을 넘지 않습니다.
출력
첫째 줄에 루트에서 입력으로 주어진 기약분수가 있는 노드까지 가는 경로를 과 로 이루어진 문자열로 출력합니다.