P13650 [NOISG 2016] UnluckyFloors
题目描述
当 Rar the Cat 前往台湾参加 IOI 2014 时,他住在一家酒店。在入住期间,他发现酒店大楼中有些楼层“消失”了。具体来说,他注意到包含 $4$ 和 $13$ 作为子串的数字在楼层编号中被省略了。这是因为 $4$ 和 $13$ 被认为是不吉利的数字,因此在编号时被有意跳过。
为简便起见,我们将这种编号方式称为“幸运编号方案”,因为它省略了不吉利的数字。下表展示了前 $20$ 层在幸运编号方案和常规编号方案下的对应关系。
:::align{center}
| 常规编号 | 幸运编号 |
| :-: | :-: |
| $1$ | $1$ |
| $2$ | $2$ |
| $3$ | $3$ |
| $4$ | $5$ |
| $5$ | $6$ |
| $6$ | $7$ |
| $7$ | $8$ |
| $8$ | $9$ |
| $9$ | $10$ |
| $10$ | $11$ |
| $11$ | $12$ |
| $12$ | $15$ |
| $13$ | $16$ |
| $14$ | $17$ |
| $15$ | $18$ |
| $16$ | $19$ |
| $17$ | $20$ |
| $18$ | $21$ |
| $19$ | $22$ |
| $20$ | $23$ |
:::
然而,Rar the Cat 认为这种编号方式不够正规,他希望能够在幸运编号方案和常规编号方案之间进行楼层转换。例如,幸运编号方案下的第 $6$ 层对应常规编号方案下的第 $5$ 层,而幸运编号方案下的第 $15$ 层实际上是常规编号方案下的第 $12$ 层。因此,给定幸运编号方案下的某一楼层编号,Rar the Cat 希望你计算出它在常规编号方案下对应的楼层编号,反之亦然。
输入格式
你的程序需要从标准输入读取数据。
输入的第一行为一个整数 $N$,表示 Rar the Cat 需要你帮他转换的楼层编号的数量。
接下来的 $N$ 行,每行包含两个整数,分别为 $T_i$ 和 $X_i$。
如果 $T_i$ 为 $1$,你需要将 $X_i$ 从幸运编号方案转换为常规编号方案,并将结果输出在一行中。如果 $X_i$ 不是幸运编号方案下的有效楼层编号,则输出 $-1$。
如果 $T_i$ 为 $2$,你需要将 $X_i$ 从常规编号方案转换为幸运编号方案,并将结果输出在一行中。
保证答案不会超过 $64$ 位有符号整数。更多信息请参考样例测试 4 和 5。
输出格式
你的程序只需输出到标准输出。
共输出 $N$ 行,每行一个整数。对于每个 $i$,输出 $T_i$ 和 $X_i$ 的答案。
保证答案不会超过 $64$ 位有符号整数。
说明/提示
### 样例解释
样例测试 1 仅适用于子任务 1、2、3、5 和 6。
样例测试 2 仅适用于子任务 2、3 和 6。
样例测试 3 仅适用于子任务 4、5 和 6。
样例测试 4 仅适用于子任务 5 和 6。
样例测试 5 仅适用于子任务 6。
### 子任务
每个测试点的最大运行时间为 $2.5$ 秒。你的程序将在满足以下限制的输入实例集上进行测试:
| 子任务 | 分值 | $N$ | $T_i$ | $X_i$ |
| :-: | :-: | :-: | :-: | :-: |
| 1 | 5 | $0 < N \leq 50$ | $T_i = 1$ 或 $2$ | $0 < X_i \leq 25$ |
| 2 | 12 | $0 < N \leq 50$ | $T_i = 1$ 或 $2$ | $0 < X_i \leq 100000$ |
| 3 | 18 | $0 < N \leq 100000$ | $T_i = 1$ 或 $2$ | $0 < X_i \leq 100000$ |
| 4 | 11 | $0 < N \leq 100000$ | $T_i = 1$ | $X_i = 10^K - 1$,其中 $1 \leq K \leq 16$ |
| 5 | 37 | $0 < N \leq 100000$ | $T_i = 1$ | $0 < X_i \leq 10^{16}$ |
| 6 | 17 | $0 < N \leq 100000$ | $T_i = 1$ 或 $2$ | $0 < X_i \leq 10^{16}$ |
由 ChatGPT 4.1 翻译