P13056 [GCJ 2020 #1B] Expogo

题目描述

你刚刚收到了有史以来最棒的礼物:一根 **Expogo** 跳跃棒。你可以站在上面,用它进行越来越大的跳跃。 你目前站在无限大的二维后院中的点 $(0, 0)$ 处,并试图以尽可能少的跳跃次数到达目标点 $(\mathrm{X}, \mathrm{Y})$(坐标为整数)。你必须恰好落在目标点上,仅从上方经过是不够的。 每次使用 **Expogo** 跳跃棒跳跃时,你需要选择一个基本方向:北(north)、南(south)、东(east)或西(west)。第 $i$ 次跳跃会将你移动 $2^{(i-1)}$ 个单位,因此第一次跳跃移动 1 个单位,第二次跳跃移动 2 个单位,第三次跳跃移动 4 个单位,以此类推。 给定目标点 $(\mathrm{X}, \mathrm{Y})$,判断是否可以到达该点。如果可以,请展示如何以最少的跳跃次数实现。

输入格式

输入的第一行包含测试用例的数量 $\mathrm{T}$。接下来是 $\mathrm{T}$ 个测试用例,每个测试用例占一行,包含两个整数 $\mathrm{X}$ 和 $\mathrm{Y}$,表示目标点的坐标。

输出格式

对于每个测试用例,输出一行 `Case #x: y`,其中 $x$ 是测试用例编号(从 1 开始),$y$ 是 **IMPOSSIBLE**(如果无法到达目标点)。否则,$y$ 应为一个由若干字符组成的字符串,每个字符为 $\mathrm{N}$(北)、$\mathrm{S}$(南)、$\mathrm{E}$(东)或 $\mathrm{W}$(西),表示按顺序跳跃的方向。此跳跃序列必须在最后一次跳跃结束时到达目标点,且必须是最短的可能序列。

说明/提示

**样例解释** 在样例 #1 中,你可以从 $(0, 0)$ 向南跳到 $(0, -1)$,然后向东跳到 $(2, -1)$,最后向北跳到 $(2, 3)$。 我们可以确定没有更高效的解决方案(两次或更少跳跃),因为到达目标点至少需要 $2 + 3 = 5$ 个单位的距离,而前两次跳跃总共只能提供 $3$ 个单位的距离。 注意,样例 #2 是样例 #1 关于两个坐标轴的镜像,因此答案也是样例 #1 答案中所有方向的镜像。 在样例 #3 中,注意 **EWE** 不是一个有效答案,尽管它能到达目标点,因为存在使用更少跳跃次数的方案。 我们留给你思考为什么在样例 #4 中无法到达目标点。 **数据范围** - $(\text{X}, \text{Y}) \neq (0, 0)$。 **测试集 1(5 分,可见判定)** - $1 \leqslant \text{T} \leqslant 80$。 - $-4 \leqslant \text{X} \leqslant 4$。 - $-4 \leqslant \text{Y} \leqslant 4$。 **测试集 2(8 分,可见判定)** - $1 \leqslant \text{T} \leqslant 100$。 - $-100 \leqslant \text{X} \leqslant 100$。 - $-100 \leqslant \text{Y} \leqslant 100$。 **测试集 3(16 分,可见判定)** - $1 \leqslant \text{T} \leqslant 100$。 - $-10^{9} \leqslant \text{X} \leqslant 10^{9}$。 - $-10^{9} \leqslant \text{Y} \leqslant 10^{9}$。 翻译由 DeepSeek V3 完成