AT_abc269_c [ABC269C] Submask

题目描述

给定一个非负整数 $N$,请按升序输出所有满足以下条件的非负整数 $x$: - 将 $x$ 用二进制表示时,其所有为 $1$ 的位的集合,必须是 $N$ 的二进制表示中为 $1$ 的位的集合的子集。 - 换句话说,对于所有非负整数 $k$,如果 $x$ 的 $2^k$ 位为 $1$,那么 $N$ 的 $2^k$ 位也必须为 $1$。

输入格式

输入以以下格式从标准输入读入。 > $N$

输出格式

请将所有满足条件的非负整数 $x$ 按升序,每行输出一个十进制整数。

说明/提示

## 限制 - $N$ 是整数。 - $0 \leq N < 2^{60}$。 - $N$ 的二进制表示中为 $1$ 的位不超过 $15$ 个。 ## 样例解释 1 将 $N=11_{(10)}$ 用二进制表示为 $1011_{(2)}$。满足条件的非负整数 $x$ 如下: - $0000_{(2)}=0_{(10)}$ - $0001_{(2)}=1_{(10)}$ - $0010_{(2)}=2_{(10)}$ - $0011_{(2)}=3_{(10)}$ - $1000_{(2)}=8_{(10)}$ - $1001_{(2)}=9_{(10)}$ - $1010_{(2)}=10_{(10)}$ - $1011_{(2)}=11_{(10)}$ ## 样例解释 3 输入可能超出 $32$ 位有符号整数的范围。 由 ChatGPT 4.1 翻译