CF727A Transformation: from A to B
题目描述
Vasily 有一个数字 $a$,他希望将其变成另一个数字 $b$。为此,他可以进行两种操作:
- 将当前数字乘以 $2$(即,将数字 $x$ 替换为 $2·x$);
- 在当前数字的右侧添加一个数字 $1$(即,将数字 $x$ 替换为 $10·x+1$)。
你需要帮助 Vasily,仅通过上述操作,将数字 $a$ 变换为数字 $b$,或者判断无法完成变换。
请注意,本题不要求操作次数最少,只需找出任意一种从 $a$ 变换到 $b$ 的方法即可。
输入格式
第一行包含两个正整数 $a$ 和 $b$($1 \leq a < b \leq 10^{9}$),分别表示 Vasily 当前拥有的数字以及他希望得到的数字。
输出格式
如果无法通过操作将 $a$ 变换为 $b$,输出一行 “NO”(不包含引号)。
否则输出三行。第一行输出 “YES”(不包含引号)。第二行输出一个整数 $k$,表示变换序列的长度。第三行输出变换序列 $x_{1},x_{2},...,x_{k}$,其中:
- $x_{1}$ 等于 $a$,
- $x_{k}$ 等于 $b$,
- 对于 $1 < i \leq k$,$x_{i}$ 由 $x_{i-1}$ 通过上述任意一种操作得到。
如果有多组答案,输出其中任意一组即可。
说明/提示
由 ChatGPT 5 翻译