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 翻译