编程题
### 问题描述 在遥远的数字王国里,每个数字都有自己独特的特征和能力。数字 $1$ 是一个腼腆而寂寞的小数字,他渴望有朋友和伙伴来陪伴他。他梦想着能变得强大,勇敢地面对数字王国中的种种挑战。 有一天,数字 $1$ 听说传说中的数字 $K$ ,是数字王国中最强大的数字。他相信如果自己能变成数字 $K$ ,就能够找到真正的朋友和属于自己的位置。 于是,数字 $1$ 就去找到了一位魔法师 $W$ ,魔法师给了他两种转换药水(每一种药水可以无限使用)分别是: 1. 使 $X$ 变成 $X \times 2$ 。 2. 使 $X$ 变成 $X \times 2 + 1$ 。 由于数字 $1$ 很笨,他不知道怎样使用药水才能变成 $K$ ,所以他来请教你了。 ### 输入格式 输入仅一行,输一个数 $K$ 表示数字 $1$ 想转换的目标数字。 ### 输出格式 请输出两行。 第一行输出一共使用了多少药水。 第二行输出使用药水的顺序,用空格隔开。 ### 样例输入 ```text 10 ``` ### 样例输出 ```text 3 1 2 1 ``` ### 说明 在样例中,一共是需要使用三次才能从 $1$ 变成 $10$ 。 第一步:选择 $1$ ,然后 $1$ 就变成了 $2$ 。 第二步:选择 $2$ ,然后 $2$ 就变成了 $5$ 。 第三步:选择 $1$ ,然后 $5$ 就变成了 $10$ 。 ### 评测数据规模 对于 $100$% 的评测数据,$2\leq K\leq 10^{18}$。
查看答案
赣ICP备20007335号-2