4209: Submask
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:0
解决:0
题目描述
# Submask
### 内存
1024MB
### 时间
2S
## 题目描述
给定一个非负整数 $N$。请按升序输出所有满足以下条件的非负整数 $x$:
- $x$ 的二进制表示中包含 $1$ 的位置集合是 $N$ 的二进制表示中包含 1 的位置集合的子集。
换句话说,对于每个非负整数 $k$,如果 $x$ 从低到高第 $k$ 位是 $1$,那么 $N$ 从低到高第 $k$ 位也必须是 $1$。
## 输入格式
输入整数$N$,按升序输出满足条件的所有整数,每个整数占一行。
## 输出格式
## 输入输出样例
### 输入样例1
```
11
```
### 输出样例1
```
0
1
2
3
8
9
10
11
```
### 输入样例2
```
0
```
### 输出样例2
```
0
```
### 输入样例3
```
576461302059761664
```
### 输出样例3
```
0
524288
549755813888
549756338176
576460752303423488
576460752303947776
576461302059237376
576461302059761664
```
## 数据范围与提示
【样例1说明】
$N = 11_{(10)} = 1011_{(2)}$
满足条件的整数 $x$ 有:
1. $0000_{(2)}=0_{(10)}$
1. $0001_{(2)}=1_{(10)}$
1. $0010_{(2)}=2_{(10)}$
1. $0011_{(2)}=3_{(10)}$
1. $1000_{(2)}=8_{(10)}$
1. $1001_{(2)}=9_{(10)}$
1. $1010_{(2)}=10_{(10)}$
1. $1011_{(2)}=11_{(10)}$
【样例3说明】
注意答案可能不适合$32$位整数类型。
【数据范围】
$N$ 是整数
$0 \le N < 2^{60}$
$N$ 的二进制表示中最多有 $15$ 个位置包含 $1$。
## 题目来源
ABC269C