时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
Professor Boolando can only think in binary, or more specifically, in powers of 2. He converts any number you give him to the smallest power of 2 that is equal to or greater than your number. For example, if you give him 5, he converts it to 8; if you give him 100, he converts it to 128; if you give him 512, he converts it to 512.
The Problem:
Given an integer, your program should binarize it.
输入描述:
The first input line contains a positive integer,n, indicating the numberof values to binarize. The values are on the followingninput lines, one per line. Each input will contain an integer between2 and 100,000 (inclusive).
输出描述:
At thebeginning of each testcase, output “Inputvalue:v”wherevis the input value. Then,on the next output line, print the binarized version. Leave a blank line after the output for each test case.
示例1
输入
复制
3
900
16
4000
输出
复制
Input value: 900
1024
Input value: 16
16
Input value: 4000
4096
判断某个数是否为2的次方
bool is2N(int n)
{
if(n&(n-1))
return false;
else
return true;
}
求某个数至少为2的多少次方
int cn=-1;
while(v)
{
v=v>>1;
cn++;
}
cout<<cn<<endl;
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<set>
#include<queue>
#include<stack>
#include<map>
#include<cmath>
using namespace std;
typedef long long ll;
#define Inf 0xfffffff
#define N 501000
#define eps 1e-7
using namespace std;
bool is2N(int n)
{
if(n&(n-1))
return false;
else
return true;
}
int main()
{
int n;
cin>>n;
while(n--)
{
//cout<<n<<endl;
int v;
cin>>v;
cout<<"Input value: "<<v<<endl;
if(is2N(v))
{
cout<<v<<endl;
}
else
{
int cn=-1;
while(v)
{
v=v>>1;
cn++;
}
cout<<pow(2,cn+1)<<endl;
}
if(n!=0)
{
cout<<endl;
}
}
return 0;
}