A7357 | 小午历险记之星核碎片
时间限制1s
内存限制128MB
通过 / 提交0/0
题目描述
在一座研究所中,小午发现了一枚能量为 $N$ 的星核。星核的能量结构可以用二进制表示,其中为 $1$ 的比特位代表该能量通道已被激活。
现在,小午想要利用这枚星核生成一些能量碎片。每个能量碎片的能量也可以用一个非负整数 $x$ 表示,其二进制中为 $1$ 的位置代表碎片所使用的能量通道。
为了保证稳定性,能量碎片必须满足以下规则:
- 能量为 $x$ 的碎片所使用的所有能量通道,必须来自能量为 $N$ 的星核已激活的通道。换句话说:对任意非负整数 $k$,如果 $x$ 的二进制第 $k$ 位为 $1$,那么 $N$ 的二进制第 $k$ 位也必须为 $1$。
请你按升序输出所有满足条件的能量碎片能量 $x$。
现在,小午想要利用这枚星核生成一些能量碎片。每个能量碎片的能量也可以用一个非负整数 $x$ 表示,其二进制中为 $1$ 的位置代表碎片所使用的能量通道。
为了保证稳定性,能量碎片必须满足以下规则:
- 能量为 $x$ 的碎片所使用的所有能量通道,必须来自能量为 $N$ 的星核已激活的通道。换句话说:对任意非负整数 $k$,如果 $x$ 的二进制第 $k$ 位为 $1$,那么 $N$ 的二进制第 $k$ 位也必须为 $1$。
请你按升序输出所有满足条件的能量碎片能量 $x$。
输入格式
输入仅一行,一个非负整数 $N$。
输出格式
将所有满足条件的非负整数 $x$ 按升序输出,每行一个十进制整数。
输入输出样例
输入 #1
11
输出 #1
0 1 2 3 8 9 10 11
样例解释
星核能量为:$11_{(10)} = 1011_{(2)}$
也就是说,第 $0,1,3$ 位能量通道被激活。
所有合法的能量碎片,只能从这些通道中任选一些(也可以一个都不选):
- $0000_{(2)} = 0$
- $0001_{(2)} = 1$
- $0010_{(2)} = 2$
- $0011_{(2)} = 3$
- $1000_{(2)} = 8$
- $1001_{(2)} = 9$
- $1010_{(2)} = 10$
- $1011_{(2)} = 11$
因此输出如上所示。
数据范围
对于 $100\%$ 的测试数据,满足:$0 \le N < 2^{60}$ , $N$ 的二进制表示中,为
1 的比特位数量 不超过 $15$ 个
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?