<table cellspacing="0" cellpadding="0" width="100%" align="center"><tbody><tr><td class="problem_content"><div class="panel_title" align="left">Problem Description</div><div class="panel_content">Given an positive integer A (1 <= A <= 100), output the lowest bit of A.
For example, given A = 26, we can write A in binary form as 11010, so the lowest bit of A is 10, so the output should be 2.
Another example goes like this: given A = 88, we can write A in binary form as 1011000, so the lowest bit of A is 1000, so the output should be 8.
</div><div class="panel_bottom"> </div></td></tr><tr><td class="problem_content"><div class="panel_title" align="left">Input</div><div class="panel_content">Each line of input contains only an integer A (1 <= A <= 100). A line containing "0" indicates the end of input, and this line is not a part of the input data.
</div><div class="panel_bottom"> </div></td></tr><tr><td class="problem_content"><div class="panel_title" align="left">Output</div><div class="panel_content">For each A in the input, output a line containing only its lowest bit.
</div><div class="panel_bottom"> </div></td></tr><tr><td class="problem_content"><div class="panel_title" align="left">Sample Input</div><div class="panel_content"><pre>26
88
0
Sample Output
2 8
Author
SHI, Xiaohan
Source
Zhejiang University Local Contest 2005
// 解法(1)
//#include <stdio.h>
//#include <stdlib.h>
//#include <string.h>
//#include <math.h>
//int main(void)
//{
// int num, sum;
// char binary[10] = {0};
// int i, j;
// while(scanf("%d", &num)!=EOF && num != 0)
// {
// sum = 0;
// itoa(num, binary, 2);
// for(i = strlen(binary) - 1, j = 0; i >= 0; i--, j++)
// {
// sum += (binary[i] - '0') * pow(2, j);// 数字*数权(8421)
// if(binary[i] == '1') break;
// }
// printf("%d\n", sum);
// }
//
// return 0;
//}
// 解法(2)
#include <stdio.h>
#include <math.h>
int main(void)
{
int num, sum;
while(scanf("%d", &num)!=EOF && num != 0)
{
int t = 0;
while(num % 2 == 0)// 判断每次的余数,只要是0,就满足
{
t ++;
num /= 2;
}
printf("%d\n", (int)pow(2, t));
}
return 0;
}