配点 : 300 点
問題文
非負整数 N が与えられるので、以下の条件を満たす非負整数 x を昇順に全て出力してください。
- x を 2 進数として表記した時に 1 となる位の集合が、 N を 2 進数として表記した時に 1 となる位の集合の部分集合となる。- すなわち、全ての非負整数 k について、「 x の 2k の位が 1 ならば、 N の 2k の位は 1 」が成り立つ。
- すなわち、全ての非負整数 k について、「 x の 2k の位が 1 ならば、 N の 2k の位は 1 」が成り立つ。
制約
- N は整数
- 0≤N<260
- N を 2 進数として表記した時、 1 となる位は 15 個以下である
入力
入力は以下の形式で標準入力から与えられる。
N
出力
答えを 1 行に 1 つずつ、10 進法の整数として昇順に出力せよ。
11
0
1
2
3
8
9
10
11
N=11(10) を 2 進数で表記すると、 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)
0
0
576461302059761664
0
524288
549755813888
549756338176
576460752303423488
576460752303947776
576461302059237376
576461302059761664
入力は 32bit 符号付き整数に収まらない可能性があります。