만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

Expogo

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

요약
점프 길이가 1, 2, 4로 두 배씩 늘어나는 Expogo로 (X, Y)에 정확히 도달하는 가장 짧은 방향 문자열을 구하고, 불가능하면 IMPOSSIBLE을 출력합니다.
난이도

보통10점 중 6점

유형
수학, 비트 연산, 구현
정답자
아직 제출이 없습니다

문제

방금 세상에서 가장 좋은 선물인 Expogo 막대를 받았다. 막대 위에 올라서서 점점 더 큰 거리를 뛸 수 있다.

무한히 넓은 뒷마당의 점 (0,0)(0, 0)에 서 있다. 정수 좌표 (X,Y)(X, Y)인 목표 지점에 가능한 한 적은 횟수로 도달하려 한다. 목표 지점에는 정확히 착지해야 한다. 점프 도중에 목표 지점을 지나가기만 해서는 안 된다.

점프할 때마다 북, 남, 동, 서 중 한 방향을 고른다. ii번째 점프는 고른 방향으로 2(i−1)2(i-1)만큼 이동한다. 첫 번째 점프는 1, 두 번째 점프는 2, 세 번째 점프는 4만큼 이동하며 이런 식으로 이어진다.

목표 지점에 도달할 수 있는지 판단하라. 도달할 수 있다면 가장 적은 점프로 도달하는 방법을 보여라.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. 이어지는 TT개의 줄에는 목표 지점의 좌표를 나타내는 정수 XX와 YY가 주어진다.

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄을 출력한다. 여기서 xx는 1부터 시작하는 테스트 케이스 번호다. 목표 지점에 도달할 수 없으면 yy는 IMPOSSIBLE이다. 도달할 수 있으면 yy는 N, S, E, W 문자로 이루어진 한 글자 이상의 문자열이며, 점프 방향을 순서대로 나타낸다. 마지막 점프가 끝난 뒤 목표 지점에 정확히 도달해야 하며, 문자열은 가능한 한 짧아야 한다.

제한

(X,Y)≠(0,0)(X, Y) \neq (0, 0).

힌트

예제 1에서는 원점에서 남쪽으로 (0,−1)(0, -1)까지 뛰고, 동쪽으로 (2,−1)(2, -1)까지 뛴 뒤, 북쪽으로 (2,3)(2, 3)에 도달할 수 있다. 두 번 이하의 점프로는 도달할 수 없다. 목표까지 최소 2+3=52 + 3 = 5의 거리가 필요한데, 처음 두 번의 점프로 갈 수 있는 거리는 1+2=31 + 2 = 3뿐이다.

예제 2는 예제 1을 두 축에 대해 모두 뒤집은 경우이므로, 예제 1의 답에 나온 모든 방향을 반대로 바꾸면 답이 된다.

예제 3에서 EWE는 목표에 도달하지만, 더 짧은 경로가 있으므로 정답이 될 수 없다.

예제 4의 목표에 도달할 수 없는 이유는 직접 찾아보라.

예제1

  1. 예제 1

    입력
    4
    2 3
    -2 -3
    3 0
    -1 1
    
    예상 출력
    Case #1: SEN
    Case #2: NWS
    Case #3: EE
    Case #4: IMPOSSIBLE