#include<stdio.h>
/*解题思路:
因为要换成二进制然后取后面直到非零数字截止
说明之前都是零,求到非零跳出来即可
由二进制再转换为十进制
例: 二进制1100转换成十进制
x=0*2^0+0*2^1+1*2^2+1*2^3;
因为要转换的二进制第一位之后都是0,所以
x=1*2^(位数)
而其位数正好是前面求非零是的循环次数 */
#include<math.h>
int main()
{
int n;
int i;
while(scanf("%d",&n),n)
{
for(i=0;;i++)
{
if((n%2)!=0)
break;
else
n/=2;
}
printf("%.0lf\n",pow(2,i));
/*pow(x,y)用来计算以x 为底的 y 次方值,然后将结果返回。
注意:pow函数返回值为double型
printf ("32.01 ^ 1.54 = %f\n", pow (32.01, 1.54) );
他也可以计算小数的小数次方 */
}
return 0;
}
/*解题思路:
因为要换成二进制然后取后面直到非零数字截止
说明之前都是零,求到非零跳出来即可
由二进制再转换为十进制
例: 二进制1100转换成十进制
x=0*2^0+0*2^1+1*2^2+1*2^3;
因为要转换的二进制第一位之后都是0,所以
x=1*2^(位数)
而其位数正好是前面求非零是的循环次数 */
#include<math.h>
int main()
{
int n;
int i;
while(scanf("%d",&n),n)
{
for(i=0;;i++)
{
if((n%2)!=0)
break;
else
n/=2;
}
printf("%.0lf\n",pow(2,i));
/*pow(x,y)用来计算以x 为底的 y 次方值,然后将结果返回。
注意:pow函数返回值为double型
printf ("32.01 ^ 1.54 = %f\n", pow (32.01, 1.54) );
他也可以计算小数的小数次方 */
}
return 0;
}