Lowest Bit
Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KB
Total submit users: 2729, Accepted users: 2553
Problem 10038 : No special judgement
Problem description
Given an positive integer A (1 <= A <= 109), 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 <= 109). 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
8
0
Sample Output
2
8
Problem Source
HNU 1’st Contest
#include<iostream>
using namespace std;
int main() {
int n;
while(cin>>n,n!=0) {
int i=-1;//计算到达1前0的个数
int temp=0;
while(n) {
temp=n%2;//取余
i++;
n=n/2;
if(temp==1)
break;
}
temp=1;
while(i--) {
temp*=2;//因为格式为1000……所以转化为十进制的话 只与1在哪一位上有关,即是1*2的几次方
}
cout<<temp<<endl;
}
}