P1178 - 一个简单的问题
题目描述
众所周知,计算机中存储的数据是二进制形式。我们现在讨论的问题是关于正整数及其二进制形式的。
给定一个正整数$I$,你的任务是找出一个整数$J$,它是大于$I$的最小整数,并且其二进制形式中 '1' 的个数与$I$的二进制形式中 '1' 的个数相同。
例如,如果给定“78”,我们可以写出它的二进制形式“1001110”。该二进制形式中有4个 '1'。大于“1001110”且同样包含4个 '1' 的最小整数是“1010011”,即“83”,所以你应该输出“83”。
输入格式
每行一个整数,表示 $I$(1 <= I <= 1000000)。
一行包含数字“0”表示输入结束,该行无需处理。
输出格式
每行一个整数,表示$J$。
输入输出样例 #1
输入 #1
1
2
3
4
78
0
输出 #1
2
4
5
8
83
说明/提示
$50%$ 的数据满足:测试数据组数 <= 100
$100%$ 的数据满足:测试数据组数 <= $10^6$
测试点数目
共10个测试点,每个测试点10分
时间与内存限制
每个测试点时间:1000ms(1.0s),内存:256MiB
输入输出模式
本OJ支持两种输入输出模式
1. 标准输入输出模式:
直接从标准输入和标准输出读写数据,不需要使用freopen进行文件输入输出重定向
2. 文件输入输出模式(国内信奥赛输入输出模式):
从文件中读写数据,需要使用freopen进行输入输出重定向
本题输入文件名为:P1178.in,输出文件名为:P1178.out