#P1002. 飞翔在宇宙的不可思议的巫女

飞翔在宇宙的不可思议的巫女

飞翔在宇宙的不可思议的巫女

  • 时间限制:2 秒
  • 内存限制:512 MB

题目描述

乐园的巫女博丽灵梦正在梦境世界中穿梭,寻找梦境的管理者哆来咪。众所周知,哆来咪所在的梦境世界,地面上布满了网格,因此可以把梦境世界看作一张带网格的二维地图。博丽灵梦最初位于点 (0, 0),而她想要找到的哆来咪位于点 (x, y)。

灵梦每次移动的位移由一个向量 (a, b) 描述:一次移动中,她沿第一坐标移动 a 个单位,同时沿第二坐标移动 b 个单位。初始时灵梦处于静止状态,即 (a, b) = (0, 0)。

灵梦连续地进行移动。每一次移动执行以下两个操作:

  1. 在当前位移向量 (a, b) 的基础上,必须将 a、b 中恰好一个的值增加 1;
  2. 然后灵梦从点 (p, q) 飞到点 (p + a, q + b)。

a 和 b 的值只能增加,不能减少。

由于梦境世界的范围有限,它由矩形 [0, x] × [0, y] 表示。如果灵梦在某次移动后离开了这个矩形区域,她就会进入不稳定的空间区域并被摧毁。

灵梦可以在任意多次移动之后结束旅程。由于不一定能准确到达哆来咪所在的位置,她希望停在一个有效点上(有效点指落在矩形 [0, x] × [0, y] 内的点,包含边界),并且该点离目标点 (x, y) 尽可能近。具体地,她希望 (p − x)² + (q − y)² 的值尽可能小。

请你帮助灵梦选择移动的次数,并决定每次移动是增加 a 还是增加 b,使她的终点是一个使 (p − x)² + (q − y)² 最小的有效点。

输入格式

每个测试包含多个测试用例。第一行包含一个整数 t(1 ≤ t ≤ 100),表示测试用例的数量。接下来是每个测试用例的描述。

每个测试用例的一行包含两个整数 x 和 y(1 ≤ x, y ≤ 10^8)——哆来咪所在位置(目标点)的坐标。

输出格式

对每个测试用例,输出一行由字符 XY 组成的字符串 s,描述灵梦的最佳行程。

字符串 s 的长度必须等于移动次数。字符 s_i 描述灵梦在第 i 次移动中的行动:

  • 若 s_i = X,则灵梦将 a 增加 1,然后用得到的向量进行移动;
  • 若 s_i = Y,则灵梦将 b 增加 1,然后用得到的向量进行移动。

字符串描述的行程必须满足题目中的全部条件,并且终点到目标点 (x, y) 的欧氏距离平方尽可能小。可以证明,在题目限制下,任意最优答案包含的移动次数都不超过 20000。如果存在多个最优答案,输出其中任意一个。

样例

输入:

7
1 1
2 1
4 2
5 4
3 7
1 100
231 157

输出:

X
XY
XYX
XYY
YXYY
YYYYYYYYYYYYY
XXXXXXXXXXYYYYYYYYYYYYYYYYX

样例解释

测试用例 1: 字符串 X 描述一次移动。灵梦将 a 增加 1,然后从 (0, 0) 移动到 (1, 0)。到目标点 (1, 1) 的距离平方为 (1−1)² + (0−1)² = 1。

测试用例 2: 字符串 XY 把灵梦准确带到了目标点:

(0, 0) → (1, 0) → (2, 1)

测试用例 3: 字符串 XYX 描述的移动序列为:

(0, 0) → (1, 0) → (2, 1) → (4, 2)

灵梦准确到达了目标点 (4, 2)。

测试用例 4: 字符串 XYY 把灵梦带到了点 (3, 3)。到目标点 (5, 4) 的距离平方为 (3−5)² + (3−4)² = 5。另一个最优答案,例如 XYX,可以把灵梦带到点 (4, 2)。