아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

카드 셔플

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

요약
홀수 크기 N인 덱에서 위치 A의 카드를 위치 B로 옮기는 X, Y 셔플의 최단 순서를 구한다.
난이도

어려움10점 중 8점

유형
구현, 수학, 완전 탐색, 시뮬레이션
정답자
아직 제출이 없습니다

문제

마술사 견습생 진수에게는 N (N은 홀수) 장의 카드가 있고 진수는 두 가지 셔플을 할 줄 안다.

첫 번째 셔플을 X-셔플이라고 하고 셔플을 하는 방법은 다음과 같다.

앞 부분의 (N+1)/2 개와 뒷 부분 (N-1)/2 개로 나눈다.

뒷 부분을 순서대로 앞 부분 사이사이에 끼워넣는다.

두 번째 셔플을 Y-셔플이라고 하고 셔플을 하는 방법은 다음과 같다.

앞 부분의 (N-1)/2 개와 뒷 부분의 (N+1)/2 개로 나눈다.

앞 부분을 순서대로 뒷 부분 사이사이에 끼워넣는다.

처음 카드팩을 뜯으면 카드는 앞 부분부터 차례대로 1번, 2번, ..., N번 카드가 순서대로 있다.

진수는 위의 두 셔플을 사용하여 A번 카드를 앞에서 B번째로 보내는 마술을 하고자 한다.

하지만 카드가 많아질수록 머리가 복잡하여 힘들어 고민하고 있다. 진수를 도와 최소 셔플 방법을 구하자.

입력

첫 번째 줄에 테스트 케이스 개수 T (1 ≤ T ≤ 100) 가 주어진다.

다음 T개 줄에는 각 줄마다 N, A, B (3 ≤ N < 10^9, 1 ≤ A, B ≤ N, A ≠ B, N은 홀수) 가 주어진다.

항상 방법이 존재하는 입력만 주어진다.

출력

i번째 줄에는 i번째 테스트 케이스의 최소 횟수로 셔플하는 방법을 나타내는 문자열 S = s₁s₂...sK (sj = 'X' or 'Y') 를 출력한다.

sj는 j번째 셔플이 X-셔플인지 Y-셔플인지를 의미한다.

방법이 여러 가지인 경우 그 중 하나만 출력한다.

예제1

  1. 예제 1

    입력
    2
    9 6 7
    3 1 2
    
    예상 출력
    XYX
    Y