CF960C Subsequence Counting

题目描述

皮卡丘有一个数组。他把该数组的所有非空子序列都写在了纸上。注意,一个长度为 $n$ 的数组共有 $2^n-1$ 个非空子序列。 皮卡丘一如既往地调皮,把所有满足 最大值 $-$ 最小值 $\geq d$ 的子序列都删掉了。 最后,皮卡丘只剩下 $X$ 个子序列。 然而,他把最初的数组弄丢了,现在陷入了困境。他还记得 $X$ 和 $d$ 这两个数字。现在他希望你帮他构造一个满足上述条件的数组。最终数组中的所有数都应为小于 $10^{18}$ 的正整数。 注意,输出数组的元素个数不能超过 $10^4$。如果无解,输出 $-1$。

输入格式

输入仅一行,包含两个用空格分隔的整数 $X$ 和 $d$($1 \leq X, d \leq 10^9$)。

输出格式

输出应包含两行。 第一行包含一个整数 $n$($1 \leq n \leq 10000$),表示最终数组中的整数个数。 第二行包含 $n$ 个用空格分隔的整数 $a_1, a_2, \ldots, a_n$($1 \leq a_i < 10^{18}$)。 如果无解,输出一行 $-1$。如果有多组答案,输出任意一组即可。

说明/提示

在第一个样例的输出中,删去所有满足最大值 $-$ 最小值 $\geq 5$ 的子序列后,剩下的子序列为 $[5],[5,7],[5,6],[5,7,6],[50],[7],[7,6],[15],[6],[100]$,共 $10$ 个。因此,数组 $[5,50,7,15,6,100]$ 是合法的。 同理,在第二个样例中,删去所有满足最大值 $-$ 最小值 $\geq 2$ 的子序列后,剩下的子序列为 $[10],[100],[1000],[10000]$,共 $4$ 个。因此,数组 $[10,100,1000,10000]$ 是合法的。 由 ChatGPT 4.1 翻译