분수 경로
시간 제한1초메모리 제한1024 MB
R/L은 A에 B를 더하거나 빼고 U/D는 B를 두 배로 만들거나 반으로 나누는 이동으로, A가 n/d가 되는 1000 이하 길이의 경로를 찾거나 불가능을 판정한다.
문제
무한한 차원 좌표 평면에서 에는 무한 정밀도의 실수를 저장할 수 있는 변수 와 가 있다. 처음에 의 값은 이고 의 값은 이다. 두 변수는 이동할 때 같이 이동하며 항상 서로 같은 좌표에 존재한다.
변수 , 는 에서 인접한 좌표 , , , 로 이동할 수 있다. 이때 이동한 거리는 이라고 정의한다. 변수 , 는 이동한 방향에 따라 값이 달라지는데 아래와 같이 달라진다.
- 에서 로 이동 : 변수 에 변수 를 더한다. 즉,
+=이며 문자R로 표현한다. - 에서 로 이동 : 변수 에서 변수 를 뺀다. 즉,
-=이며 문자L로 표현한다. - 에서 로 이동 : 변수 에 를 곱한다. 즉,
*=이며 문자U로 표현한다. - 에서 로 이동 : 변수 를 로 나눈다. 즉,
/=이며 문자D로 표현한다.
변수 의 값이 정확히 가 되기 위한 경로를 구하여라.
입력
첫 번째 줄에 정수 , 가 공백으로 구분되어 주어진다. 이는 임을 의미한다.
출력
만약 변수 의 값이 가 될 수 있다면
- 첫 번째 줄에 변수 의 값이 가 되기 위한 이동 경로의 길이 을 출력한다. 단, 경로의 길이는 이상 이하여야 한다.
- 두 번째 줄에 길이가 인 경로 문자열을 출력한다. 그중 번째 문자는 번째 이동 종류를 의미한다. 출력하는 문자는
R,L,U,D중 하나여야 한다. 가능한 경로가 여러 가지라면 그중 아무거나 하나를 출력한다.
만약 변수 의 값이 가 될 수 없다면 -1을 대신 출력한다.