题解 | #牛牛的10类人#
牛牛的10类人
https://www.nowcoder.com/practice/232b7fc32fac4636819e31a7d7c960a3
描述
世界上有10类人,1类是懂二进制的,另一类的不懂二进制的。牛牛是第10种人,因此他是懂二进制的。
牛牛把二进制数分成两种,一种是 1 的数量是偶数的,牛牛称之为 1 数,一种是 0 的数量是偶数的,牛牛称之为 0 数,如果一个数同时是 1 数和 0 数,那称之为 10 数。
输入描述:
第一行输入一个正整数 n 表示数的个数
第二行输入 n 个正整数,表示每个输入的数字
输出描述:
输出一行,对每个数字进行分类,即输出 0 或 1 或 10,如果既不是 0 类也不是 1 类则输出 100
示例1
输入:
2 1 10复制
输出:
0 10
#include<stdio.h>
#define N 2int fun(int a)//十进制转二进制
{
int i = 1, j = 0;
int s=0;
while (a!=0){
j = a % N;
a = a / N;
s = s + j * i;
i *= 10;
}
return s;
}
int main()
{
int n;
scanf("%d",&n);
int a[10];
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
a[i]=fun(a[i]);
}
int i=0;
for(i=0;i<n;i++){
int c=0,o=0,s;
while(a[i]!=0)
{
s=a[i]%10;
if(s==1) c++;
else o++;
a[i]/=10;
}
c%=2;o%=2;
int r=0;
if(c==0&&o!=0) r=1;
else if(o==0&&c!=0) r=0;
else if(o==0&&c==0) r=10;
else r=100;
printf("%d ",r);
}
}