「CMOI R1」mex1
题目背景
小 U 对于从一个集合映射到一个数的函数很感兴趣,而 $\text{mex}$ 是一个很好的例子。
$\text{mex}(S)$ 指的是在集合 $S$ 中没有出现过的最小非负整数。
题目描述
多组数据。
每组数据,给定 $c$,要求构造序列 $a_1,a_2,...,a_n\in [0,2\times 10^9]$ 满足
$$\sum\limits_{S\neq \emptyset,S\subseteq \{1,2,...,n\}}\text{mex}(a_{S_1},a_{S_2},...,a_{S_{|S|}})=c$$
其中要求 $1\le n\le40$。可以证明在该题的数据范围内如果存在解,则在 $1\le n\le 40$ 时一定存在解。
输入输出格式
输入格式
第一行一个整数,数据组数 $T$。
之后 $T$ 行每行一个非负整数 $c$。
输出格式
对于每组数据:
如果无解,则仅输出一行一个整数 $-1$。
否则,第一行输出一个正整数 $n$。
第二行输出 $n$ 个非负整数 $a_1,a_2,...,a_n$。
输入输出样例
输入样例 #1
5
120
8128
248
0
5
输出样例 #1
7
1 9 1 9 8 1 0
13
1 1 4 5 1 4 1 9 1 9 8 1 0
8
1 2 3 9 0 7 3 8
7
1 2 3 9 7 3 8
-1
说明
### 样例解释
我有一个绝妙的解释,可惜这里写不下。
### 数据范围
$id$ 为 $\text{subtask}$ 编号。
|$id$|特殊性质|分数|$id$|特殊性质|分数|
|-:|-:|-:|-:|-:|-:|
|$1$|$c\le10$|$3$|$6$|$c\le1\times 10^6$|$15$|
|$2$|$c\le30$|$6$|$7$|$T\le 10$|$5$|
|$3$|$c\le500$|$6$|$8$|$T\le 5\times 10^4$|$15$|
|$4$|$c\le2\times 10^3$|$5$|$9$|$T\le 8\times 10^4$|$10$|
|$5$|$c\le1\times 10^5$|$20$|$10$||$15$|
对于 $100\%$ 的数据,$T\le 10^5$,$0\le c\le 2\times 10^9$。
### 提示
由于部分 STL 的常数较大,如果认为你的时间复杂度没有问题却 TLE,请不要使用 STL。
请注意输出效率,这里提供一种快写模板(请不要用以下代码输出负数):
```cpp
void write(int x){
if(x>9)write(x/10);
putchar(x%10+'0');
}
```