Description:
Given an positive integer A (1 <= A <= 100), output the integer which consists of the lowest bit of “1” and the rest bits of “0” in A.
For example, given A = 26, we can write A in binary form as “11010”, so the result is “10” in the form of binary, and the output should be 2.
Another example goes like this: given A = 88, we can write A in binary form as “1011000”, so the result is “1000”. And the output should be 8.
Input
Each line of input contains only an integer A (1 <= A <= 100). A line containing a single "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 the integer which consists of the lowest bit of “1” and the rest bits of “0” in A.
Sample Input
26
88
0
Sample Output
2
8
程序:
#include<iostream>
#include<vector>
//#include<bitset>
using namespace std;
#include<vector>
//#include<bitset>
using namespace std;
int Ming(int x)
{
int result = 1;
for(int i = 0;i<x;i++)
{
result = result*2;
}
return result;
}
{
int result = 1;
for(int i = 0;i<x;i++)
{
result = result*2;
}
return result;
}
int RTimes(int x)
{
int times = 0;
while(x%2 != 1)
{
times++;
x = x>>1;
}
return Ming(times);
}
{
int times = 0;
while(x%2 != 1)
{
times++;
x = x>>1;
}
return Ming(times);
}
void main()
{
int x = 0;
bool end = true;
vector<int>store;
while(end)
{
cin>>x;
if(x != 0)
{
if(x>0)
store.push_back(x);
else
{
cout<<"Error cin..."<<endl;
break;
}
}
else
{
break;
}
}
for(int i = 0;i<store.size();i++)
{
cout<<RTimes(store[i])<<endl;
}
}
{
int x = 0;
bool end = true;
vector<int>store;
while(end)
{
cin>>x;
if(x != 0)
{
if(x>0)
store.push_back(x);
else
{
cout<<"Error cin..."<<endl;
break;
}
}
else
{
break;
}
}
for(int i = 0;i<store.size();i++)
{
cout<<RTimes(store[i])<<endl;
}
}