题目描述
小扇和小船今天又玩起来了数字游戏,小船给小扇一个正整数 n ,小扇需要找到一个比 n 大的数字 m,使得 m 和 n 对应的二进制中 1 的个数要相同,如:
1:4对应二进制100
2:8对应二进制1000
3:其中1的个数都为1个
现在求 m 的最小数。
输入描述
输入一个正整数 n (1<=n <= 1e9)
输出描述
输出一个正整数 m
示例1
输入
2
输出
4
说明:
2的二进制为10,4的二进制为100,1的个数相同,且4是满足条件的最小数
示例2
输入
7
输出
11
说明
7的二进制为111,11的二进制为1011,1的个数相同,且11是满足条件的最小数
思路
代码
public class Demo16 {
public static void main(String[] args) {
Scanner in =new Scanner(System.in);
while (in.hasNextInt()){
int i = in.nextInt();
String sBinary = Integer.toBinaryString(i);
String res = "10"+sBinary.substring(1, sBinary.length());
Integer integer = Integer.valueOf(res, 2);
System.out.println(integer);
}
in.close();
}
}