AT_jsc2022_final_d And is 0

题目描述

给定一个整数 $N$。 请你判断是否存在一个非负整数序列 $A=(A_1,A_2,\cdots,A_k)$,满足以下条件: - $A$ 的长度 $k$ 满足 $1\leq k\leq 100$。 - $A$ 的每个元素都是满足 $0\leq A_i \leq 2^{20}-1$ 的整数。 - 设 $A$ 的所有非空(不要求连续)子序列中,元素按位与(bitwise AND)结果为 $0$ 的子序列数量恰好为 $N$ 个。这里,不同位置选出的子序列即使值相同,也视为不同。 按位与 $\mathrm{AND}$ 运算定义如下: 对于整数 $A,B$,其按位与 $A\ \mathrm{AND}\ B$ 的二进制第 $2^k$ 位,等于 $A$ 和 $B$ 的该位都为 $1$ 时为 $1$,否则为 $0$。 例如,$3\ \mathrm{AND}\ 5=1$,因为 $011\ \mathrm{AND}\ 101 = 001$。 更一般地,$k$ 个整数 $p_1,p_2,\ldots,p_k$ 的按位与为 $$(\dots ((p_1\ \mathrm{AND}\ p_2)\ \mathrm{AND}\ p_3)\ \mathrm{AND}\ \dots\ \mathrm{AND}\ p_k)$$ 并且可以证明其值与顺序无关。

输入格式

输入为一行: > $N$

输出格式

如果不存在满足条件的数列 $A$,请输出 `-1`。 如果存在,请输出如下格式: > $k\ A_1\ A_2\ \cdots\ A_k$ 如果有多组答案,输出任意一组均视为正确。

说明/提示

### 样例解释 1 使 $A$ 的非空子序列中,按位与为 $0$ 的有 $3$ 个,如下: - $(2,1)$(取第 $1$、$2$ 个元素) - $(2,1)$(取第 $1$、$3$ 个元素) - $(2,1,1)$(取第 $1$、$2$、$3$ 个元素) ### 数据范围 - $1\leq N\leq 2\times 10^5$ - 输入的值均为整数。 由 ChatGPT 5 翻译