분수 경로

시간 제한1초메모리 제한1024 MB

요약
R/L은 A에 B를 더하거나 빼고 U/D는 B를 두 배로 만들거나 반으로 나누는 이동으로, A가 n/d가 되는 1000 이하 길이의 경로를 찾거나 불가능을 판정한다.
난이도

보통10점 중 7점

유형
수학, 이분 탐색, 그리디, 비트 연산
정답자
아직 제출이 없습니다

문제

무한한 22차원 좌표 평면에서 (0,0)(0, 0)에는 무한 정밀도의 실수를 저장할 수 있는 변수 AA와 BB가 있다. 처음에 AA의 값은 00이고 BB의 값은 11이다. 두 변수는 이동할 때 같이 이동하며 항상 서로 같은 좌표에 존재한다.

변수 AA, BB는 (x,y)(x, y)에서 인접한 좌표 (x+1,y)(x+1, y), (x−1,y)(x-1, y), (x,y+1)(x, y+1), (x,y−1)(x, y-1)로 이동할 수 있다. 이때 이동한 거리는 11이라고 정의한다. 변수 AA, BB는 이동한 방향에 따라 값이 달라지는데 아래와 같이 달라진다.

  • (x,y)(x, y)에서 (x+1,y)(x+1, y)로 이동 : 변수 AA에 변수 BB를 더한다. 즉, AA += BB이며 문자 R로 표현한다.
  • (x,y)(x, y)에서 (x−1,y)(x-1, y)로 이동 : 변수 AA에서 변수 BB를 뺀다. 즉, AA -= BB이며 문자 L로 표현한다.
  • (x,y)(x, y)에서 (x,y+1)(x, y+1)로 이동 : 변수 BB에 22를 곱한다. 즉, BB *= 22이며 문자 U로 표현한다.
  • (x,y)(x, y)에서 (x,y−1)(x, y-1)로 이동 : 변수 BB를 22로 나눈다. 즉, BB /= 22이며 문자 D로 표현한다.

변수 AA의 값이 정확히 ZZ가 되기 위한 경로를 구하여라.

입력

첫 번째 줄에 정수 nn, dd가 공백으로 구분되어 주어진다. 이는 Z=nd\displaystyle Z = \frac{n}{d}임을 의미한다.

출력

만약 변수 AA의 값이 ZZ가 될 수 있다면

  • 첫 번째 줄에 변수 AA의 값이 ZZ가 되기 위한 이동 경로의 길이 LL을 출력한다. 단, 경로의 길이는 00 이상 10001000 이하여야 한다.
  • 두 번째 줄에 길이가 LL인 경로 문자열을 출력한다. 그중 ii번째 문자는 ii번째 이동 종류를 의미한다. 출력하는 문자는 R, L, U, D 중 하나여야 한다. 가능한 경로가 여러 가지라면 그중 아무거나 하나를 출력한다.

만약 변수 AA의 값이 ZZ가 될 수 없다면 -1을 대신 출력한다.

제한

  • 0≤∣n∣≤10180 \le |n| \le 10^{18}
  • 1≤d≤10181 \le d \le 10^{18}

예제3

  1. 예제 1

    입력
    1 1
    
    예상 출력
    4
    URDL
    
  2. 예제 2

    입력
    -4 2
    
    예상 출력
    5
    DLLLL
    
  3. 예제 3

    입력
    2 3
    
    예상 출력
    -1