0
点赞
收藏
分享

微信扫一扫

1325 K-Good Number


K-Good Number
题目描述
如果一个整数的二进制(无前导0)中1的个数比0的个数多,我们称其为好数。如果其中1比0多k个,我们称其为k-好数
现在给你一个整数,请计算它的k。

输入
第一行一个整数T(1≤T≤10000),表示样例的个数。 以后的每行一个整数x(0≤x≤109)。

输出
每行输出一个样例的结果。如果它不是好数,输出0;否则输出k。

样例输入
4
1
2
3
4
样例输出
1
0
2
0

Sample Input

Sample Output

Source
考察对进制转换的理解。

#include <stdio.h>
int main()
{
int t;//声明样例数t
scanf("%d",&t);//输入t
while(t--)//t为0时,结束循环
{
int x,k0=0,k1=0;//k1存储1的个数,k0存储0的个数,初始值都为0
scanf("%d",&x);//输入x
while(x)//x为0时,结束循环
{
if(x%2==1)//x对2取余,结果为1时,k1增加
{
k1++;
}
else//x对2取余,结果为0时,k0增加
{
k0++;
}
x/=2;//x=x/2
}
//输出
if(k1>k0)
{
printf("%d\n",k1-k0);
}
else
{
printf("0\n");
}
}
return 0;
}

写于2021年8月16日12:00分。


举报

相关推荐

0 条评论