容易题
时间限制:1秒 内存限制:256M
【问题描述】
众所周知,存储在计算机中的数据是二进制形式。我们现在讨论的问题是关于正整数及其二进制形式。
给定一个正整数 \(I\),你的任务是找出一个整数 \(J\),它是大于 \(I\) 的最小整数,并且其二进制形式的'1'的数量与 \(I\) 的二进制中'1'的数量相同。
例如,如果给出 “78”,我们可以写出它的二进制形式 “1001110”。这个二进制形式中有 4 个 1。大于 “1001110” 并且还包含 4 个 1 的最小整数的二进制是 “1010011” ,即 “83” ,因此您应输出 “83”。
【输入格式】
每行一个整数 \(I\)。包含数字“0”的行终止输入,并且不需要处理该行。
【输出格式】
每行一个整数 \(J\)。
【输入输出样例】
Input
1
2
3
4
78
0
Output
2
4
5
8
83
【数据限制】
对于 \(100\%\) 的数据:\(1 ≤ I ≤ 1000000\)
【来源】
Mr.he