hdu1196 Lowest Bit
hdu1196问题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1196
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main()
{
int n;
while(scanf("%d",&n) && n != 0)
{
int i = 0;
while(n && n % 2 == 0)
{
i += n % 2 == 0; // n % 2 == 0为真的时候,值为1,假的时候为0
n /= 2;
}
printf("%.0lf\n",pow(2,i)); //输出浮点数,小数点为0位
//转换后的二进制数后面有几个0就是2的几次方
}
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int num,sum,i,j,temp;
while(cin>>num && num!=0)
{
sum=1;temp=0;
for(i=1;temp==0;i++)
{
temp=num%2;
num=num/2;
}
//i-1代表着转换后的二进制数后面0的个数
for(j=1;j<i-1;j++)
sum=sum*2;
cout<<sum<<endl;
}
return 0;
}