군꺾문자열
시간 제한1초메모리 제한1024 MB
기약분수 a/b가 주어질 때, +1과 2로 나누기 연산을 순서대로 적용해 정확히 a/b를 만드는 가장 짧은 문자열을 구하고, 길이가 같으면 사전순으로 가장 빠른 것을 찾는다.
문제
군꺾문자열은 군과 꺾으로 이루어진 문자열로, 복무율을 표현하는 방법 중 하나이다. 군꺾문자열 가 표현하는 복무율의 값은 다음과 같이 계산한다.
- 초기 상태에서 이다.
- 를 차례대로 읽으면서
군이면 에 을 더하고,꺾이면 를 로 나눈다. - 모든 글자를 읽은 후 의 값이 가 표현하는 복무율이다.
예를 들어, 군꺾문자열 군꺾군군꺾꺾꺾이 표현하는 복무율 를 계산하는 과정은 다음과 같다.
군→꺾→군→군→꺾→꺾→꺾→
따라서 군꺾군군꺾꺾꺾은 의 복무율을 표현한다.
하늘이의 현재 복무율을 뜻하는 기약분수 가 주어진다. 이를 정확히 표현하는 가장 짧은 군꺾문자열을 구하여라. 만약 를 표현하는 가장 짧은 군꺾문자열이 여러 개라면 그 중 사전순으로 가장 빠른 것을 구하여라.
만약 하늘이의 복무율 를 어떤 군꺾문자열로도 표현할 수 없다면 을 출력한다.
입력
첫째 줄에 정수 가 공백을 사이에 두고 주어진다. (, 와 는 서로소)
출력
첫째 줄에 를 표현하는 가장 짧은 군꺾문자열을 출력한다. 만약 를 표현하는 가장 짧은 군꺾문자열이 여러 개라면 그 중 사전순으로 가장 빠른 것을 출력한다. 이때 군은 G, 꺾은 K로 출력한다.
만약 하늘이의 복무율 를 군꺾문자열로 표현할 수 없다면 첫째 줄에 을 출력한다.