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;  
}
posted @ 2015-11-24 13:48  樱风凛  阅读(146)  评论(0编辑  收藏  举报