入门⏱ 1000ms💾 256MB#P2252🏷️ 位运算模拟

题目描述

门禁卡以二进制中 $1$ 的个数作为"辉级"。给定编号 $N$,找最小的、比 $N$ 大 且与 $N$ 辉级相同(二进制里 $1$ 的个数一样多)的编号 $M$。

多组询问,读到 $0$ 结束。

输入格式

若干行,每行一个正整数 $n$($1 \le n \le 10^6$);以单独一行 $0$ 结束。

输出格式

对每个 $n$ 输出一行对应的 $M$;$0$ 不产生输出。

数据范围

$$1 \le n \le 10^6$$

样例输入 #1
1
2
3
4
78
0
样例输出 #1
2
4
5
8
83
样例输入 #2
1000000
0
样例输出 #2
1000064