CF727A.Transformation: from A to B

传统题 时间 2000 ms 内存 256 MiB 5 尝试 1 已通过 1 标签

Transformation: from A to B

题目描述

Vasily 有一个数字 aa,他希望将其变成另一个数字 bb。为此,他可以进行两种操作:

  • 将当前数字乘以 22(即,将数字 xx 替换为 2x2·x);
  • 在当前数字的右侧添加一个数字 11(即,将数字 xx 替换为 10x+110·x+1)。

你需要帮助 Vasily,仅通过上述操作,将数字 aa 变换为数字 bb,或者判断无法完成变换。

请注意,本题不要求操作次数最少,只需找出任意一种从 aa 变换到 bb 的方法即可。

输入格式

第一行包含两个正整数 aabb1a<b1091 \leq a < b \leq 10^{9}),分别表示 Vasily 当前拥有的数字以及他希望得到的数字。

输出格式

如果无法通过操作将 aa 变换为 bb,输出一行 “NO”(不包含引号)。

否则输出三行。第一行输出 “YES”(不包含引号)。第二行输出一个整数 kk,表示变换序列的长度。第三行输出变换序列 x1,x2,...,xkx_{1},x_{2},...,x_{k},其中:

  • x1x_{1} 等于 aa
  • xkx_{k} 等于 bb
  • 对于 1<ik1 < i \leq kxix_{i}xi1x_{i-1} 通过上述任意一种操作得到。

如果有多组答案,输出其中任意一组即可。

说明/提示

由 ChatGPT 5 翻译

样例

2 162
YES
5
2 4 8 81 162 
4 42
NO
100 40021
YES
5
100 200 2001 4002 40021 

在线编程 IDE

建议全屏模式获得最佳体验