#include<stdio.h> #include<stdlib.h> #include<string.h> void zhuanhaun(char *Arr,int n) { if(n>1) { zhuanhaun((Arr+1),n/2); *Arr=n%2+'0'; } else {*Arr=n%2+'0';} } void panduan(int m) { int cnt1 = 0, cnt0 = 0; char Arr[100] = {0}; // 初始化数组 int j; // 处理二进制转换 zhuanhaun(Arr,m); int len = strlen(Arr); // 二进制位数 // 计算长度并统计0和1的数量 // puts(Arr); // printf("\n"); for (j = 0; j < len; j++) { if (Arr[j] == '0') cnt0++; else if(Arr[j]=='1') cnt1++; } if(cnt0%2==0&&cnt1%2==0) { printf("10 "); } else if(cnt0%2==0&&cnt1%2!=0) { printf("0 "); } else if(cnt1%2==0&&cnt0%2!=0) { printf("1 "); } else { printf("100 "); } } int main() { int n,m; int i; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&m); panduan(m); } return 0; } //之前用循环做,莫名其妙就错了。。。