Lowest Bit(hdoj1196)

Lowest Bit

Problem Description
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.
 
Input
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.
 
Output
For each A in the input, output a line containing only its lowest bit.
 
Sample Input
26
88
0
Sample Output
2
8
  把n化为二进制数,然后找出最低位,例如101000 最低位为1000 为8, 
 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cmath>
 4 using namespace std;
 5 int fen(int n)
 6 {
 7     int i,a;
 8     for(i=0;n!=0;i++)
 9     {
10         a=n%2;
11         if(a!=0)
12         {
13             return i;
14         }
15         else
16             n=n/2;
17     }
18 }
19 int main()
20 {
21     int n,i;
22     while(cin>>n)
23     {
24         if(n==0)
25             break;
26         else
27             cout<<pow(2,fen(n))<<endl;
28 
29     }
30 }
原文地址:https://www.cnblogs.com/a1225234/p/4539257.html