例子1:
输入:2 2 的二进制为 10
输出:4 4 的二进制为 100
说明: 1 的个数相同,且 4 是满足条件的最小数。
例子:
输入:7
输出:11
说明:7 的二进制为 111,11 的二进制为 1011,1 的个数相同,且 11 是满足条件的最小数。
分析:二进制中格式:
1. 10000 第一种,以1开头,后面全部为0;
2. 111111 第二种,全部是1;
3. 10110101 第三种,01都有;
解决思路:
对于第一种:左移一位 相当于二进制后加加了一位0;
第二种:在第一个1后面加一个0 应该是最小的了。类似:1‘0’1111 原二进制增加了一位;
第三种:找到最右边的"01" 组合,暴力置换即可。换成“10”
java代码:
import java.util.Scanner; public class FindMinDigit { static int sIndex = 0; static int fIndex = 0; public static void main(String[] args) { //输入1个数字 //转化为二进制 //将二进制转化 //翻译成10进制 Scanner scanner = new Scanner(System.in); //定义输入的一个数字 int changeNum = I