统计
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
1
-
描述
-
给出一个十进制正整数n,将它化为32位的二进制(32-bit binary)求出它低位上第一次出现1的位置求出它高位连续0的个数求出它低位连续0的个数求出它所有1的个数
-
输入
-
第一行一个正整数T表示测试数据的组数
接下来T行,每行一个正整数表示n (1 <= n <= 2^32 - 1)
输出
- 一行四个整数,按照题目描述依次输出,参照output 样例输入
-
3 1 100 123456
样例输出
-
1 31 0 1 3 25 2 3 7 15 6 6
来源
- Eric 上传者
#include<iostream>
#include<vector>
//#include<algorithm>
using namespace std;
int main()
{
vector<int> v;
int a,b,c,d,i,len,t;
long long n;
cin>>t;
while(t--)
{
cin>>n;
v.clear();
while(n>0)
{
v.push_back(n%2);
n=n/2;
}
for(i=0; v[i]!=1; i++);
a=i+1;
len=v.size();
b=32-len;
c=i;
d=0;
for(i=0; i<len; i++)
{
if(v[i]==1) d++;
}
cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
}
return 0;
}
-
第一行一个正整数T表示测试数据的组数