首页 > 代码库 > NYOJ 864 统计

NYOJ 864 统计

统计

时间限制: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
AC码:
#include<stdio.h>
int main()
{
	long long T,n,num[32],i,count[4];
	scanf("%lld",&T);
	while(T--)
	{
		scanf("%lld",&n);
		for(i=0;i<32;i++)
			num[i]=0;
		for(i=0;i<4;i++)
			count[i]=0;
		i=0;
		while(n!=0)
		{
			num[i]=n%2;
			count[3]=count[3]+num[i];
			if(count[3]==1&&num[i]==1)
				count[0]=i+1;
			if(count[3]==0)
				count[2]++;
			n=n/2;
			i++;
		}
		count[1]=32-i;
		for(i=0;i<4;i++)
			printf("%lld ",count[i]);
		printf("\n");
	}
	return 0;
}