CF1618F Reverse
题目描述
给定两个正整数 $x$ 和 $y$。你可以对 $x$ 执行如下操作:将 $x$ 写成没有前导零的二进制形式,在其右侧添加 $0$ 或 $1$,然后将二进制串反转,并将其转化为十进制数,作为新的 $x$。
例如:
- $34$ 可以通过一次操作变成 $81$:$34$ 的二进制形式为 $100010$,如果你添加 $1$,反转后去除前导零,得到 $1010001$,这是 $81$ 的二进制形式。
- $34$ 可以通过一次操作变成 $17$:$34$ 的二进制形式为 $100010$,如果你添加 $0$,反转后去除前导零,得到 $10001$,这是 $17$ 的二进制形式。
- $81$ 可以通过一次操作变成 $69$:$81$ 的二进制形式为 $1010001$,如果你添加 $0$,反转后去除前导零,得到 $1000101$,这是 $69$ 的二进制形式。
- $34$ 可以通过两次操作变成 $69$:首先将 $34$ 变成 $81$,然后将 $81$ 变成 $69$。
你的任务是判断,经过若干次(可以为零)操作后,是否可以将 $x$ 变成 $y$。
输入格式
输入仅一行,包含两个整数 $x$ 和 $y$($1 \le x, y \le 10^{18}$)。
输出格式
如果可以将 $x$ 变成 $y$,输出 YES;否则输出 NO。
说明/提示
在第一个样例中,你甚至不需要进行任何操作。
第四个样例在题目描述中已经给出。
由 ChatGPT 4.1 翻译