#ABC269C. 子掩码

子掩码

子掩码

题目描述

给你一个非负整数 NN。请按升序输出所有满足以下条件的非负整数 xx:

xx 的二进制表示中含有 11 的数位集合,是 NN 的二进制表示中含有 11 的数位集合的子集。

也就是说,对于每个非负整数 kk,满足:如果 xx2k2^k 位上的数字是 11,则 NN2k2^k 位上的数字也是 11

输入格式

输入按以下格式从标准输入给出:

NN

输出格式

按升序输出答案(十进制整数),每行一个。

样例

11
0
1
2
3
8
9
10
11

N=11(10)N = 11_{(10)} 的二进制表示为 1011(2)1011_{(2)}

满足条件的非负整数 xx 为:

0000(2)=0(10)0000_{(2)}=0_{(10)}

0001(2)=1(10)0001_{(2)}=1_{(10)}

0010(2)=2(10)0010_{(2)}=2_{(10)}

0011(2)=3(10)0011_{(2)}=3_{(10)}

1000(2)=8(10)1000_{(2)}=8_{(10)}

1001(2)=9(10)1001_{(2)}=9_{(10)}

1010(2)=10(10)1010_{(2)}=10_{(10)}

1011(2)=11(10)1011_{(2)}=11_{(10)}

0
0
576461302059761664
0
524288
549755813888
549756338176
576460752303423488
576460752303947776
576461302059237376
576461302059761664

输入可能超出 3232 位有符号整数的范围。

数据范围

  • NN 是整数。
  • 0N<2600 \le N \lt 2^{60}
  • NN 的二进制表示中,含有 11 的数位最多有 1515 个。
难度 普及
通过率
尝试 0
已通过 0
ID
2823
类型
传统题
Time Limit
2000ms
Memory Limit
1024MiB
上传者
标签