从A到B转型
描述
Vasily
有一个数字\(a\),他想把它变成数字\(b\)。为此,他可以进行两种操作:
1.当前数字乘以\(2\)(即,替换数字\(X\)为\(2·X\));
2.附加数字\(1\)到当前数量的右侧(即,替换数字\(X\)为\(10·X + 1\))。
您需要帮助Vasily
仅使用上述操作,将数字\(a\)转换为数字\(b\),或者说明这是不可能的。
请注意,在此任务中,您不需要最小化操作数。找到将\(a\)转换为\(b\)的任何方法就足够了。
格式
输入格式
第一行包含两个正整数\(a\)和\(b\)(\(1≤a<b≤10^9\)),表示Vasily
拥有的数字\(a\)和他想要拥有的数字\(b\)。
输出格式
如果无法从数字\(a\) 变成数字\(b\),请打印\(“NO”\)(不带引号)。.
否则打印三行。
第一行打印\(“YES”\)(不带引号)。
第二行应该包含一个整数\(k\),转换序列的长度。
第三行打印转换序列\(x(1),x(2),...,x(k)\),其中:
\(x(1)\)应该等于\(a\),
\(x(k)\)应该等于\(b\),
\(x(i)\)应该使用两个描述的操作\((1<i≤k)\)中的任何一个从\(x(i-1)\)获得。
如果有多个答案,请打印其中任何一个。
样例1
样例输入1
2 162
样例输出1
YES
5
2 4 8 81 162
限制
时间:\(1s \)空间:\(256M\)
\(10\)%的数据:\(1≤a<b≤10\);
\(100\)%的数据:\(1≤a<b≤10^9\);
来源
地址:\(zloj,J2021\)域
作者:\(jialiang2509\)
模拟赛\(T2\)