题目描述
给你一个正整数A(1<=A<=100),输出A的最低数。
例如,给你A=26,我们可以将A化成二进制为11010,则A的最低数是10,输出10的十进制为2。
再例如,给你A=88,我们可以将A化成二进制为1011000,则A的最低数是1000,输出为8。
输入格式
输入包含多组测试样例。每行输入一个正整数A(1<=A<=100)。当输入0时,输入结束。
输出
对于每一个输入,输出对应的最低数。
样例输入
26
88
0
样例输出
2
8
输入一个值,先把这个数转化为二进制,从右往左取第一个1和右面的0,再把这个值转化为十进制。这只要判断输入的那个值除以2余数是不是为0;若为0则a*2(a初始值为);直到那个值除2余数为1。
package acm;
import java.util.Scanner;
public class 最低数 {
public static void main(String[]args)
{
Scanner input = new Scanner(System.in);
while(input.hasNextInt())
{
int num = input.nextInt();
if(num == 0)
break;
int a = 1;
while(num % 2 == 0)
{
num /= 2;
a *= 2;
}
System.out.println(a);
}
}
}