题解 | 牛牛的10类人
牛牛的10类人
https://www.nowcoder.com/practice/232b7fc32fac4636819e31a7d7c960a3
//本来是想用递归求解的,但是存在范围溢出问题
#include <stdio.h> //标准输入输出函数头文件
int main()
{
int n; //定义整型变量,表示用户想要输入的数字个数
//输入
scanf("%d",&n);
int a[n]; //定义整型数组,保存用户输入的数字
//输入
for(int i=0;i<n;i++)
{
scanf("%d ",&a[i]);
}
//利用for循环判断
for(int i=0;i<n;i++)
{
//首先对特殊情况进行判断,当a[i]为0时无法进入while循环
if(a[i]==0)
{
printf("100 ");
}
int sum1 = 0,sum0 = 0; //定义整型变量,表示二进制中1和0的个数
//利用while循环求出二进制的每一位并记录0和1的个数
while(a[i])
{
int s=a[i]%2;
a[i]=a[i]/2;
if(s==0)
{
sum0++;
}
else if(s==1)
{
sum1++;
}
}
//利用if语句进行判断
if(sum1%2==0&&sum0%2==0)
{
printf("10 ");
}
else if(sum1%2==0)
{
printf("1 ");
}
else if(sum0%2==0)
{
printf("0 ");
}
else
{
printf("100 ");
}
}
return 0;
}