BC165. 牛牛的10类人
描述
输入描述
输出描述
输出一行,对每个数字进行分类,即输出 0 或 1 或 10,如果既不是 0 类也不是 1 类则输出 100示例1
输入:
2 1 10
输出:
0 10
C 解法, 执行用时: 2ms, 内存消耗: 292KB, 提交时间: 2022-07-21
#include<stdio.h> #define N 2 int 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); } }
C 解法, 执行用时: 2ms, 内存消耗: 316KB, 提交时间: 2022-08-01
#include <stdio.h> #include <math.h> int convert(int a){ int sum = 0; int i = 0; while(a != 0){ sum += a%2*(int)pow(10,i); i++; a /= 2; } return sum; } int main(){ int n; scanf("%d",&n); int b[n]; int c[n]; for(int i = 0;i<n;i++){ scanf("%d",&b[i]); } for(int i = 0;i<n;i++){ int temp = convert(b[i]); int count1 = 0; int count2 = 0; while(temp != 0){ if(temp%10){ count1++; } else{ count2++; } temp /= 10; } if(count1%2 == 0){ if(count1%2 == 0 && count2%2 == 0){ c[i] = 10; } else{ c[i] = 1; } } else if(count2%2 == 0){ c[i] = 0; } else{ c[i] = 100; } } for(int i = 0;i<n;i++){ printf("%d ",c[i]); } return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 320KB, 提交时间: 2022-06-10
#include<stdio.h> int main() { int n,m[200]; scanf("%d",&n); for(int i=0;i<n;i++)//1100 { int o=0; int l=0; scanf("%d",&m[i]); int j=m[i]; while(j) { if(j%2==1) l++; else o++; j/=2; } if(l%2==0&&o%2!=0) { printf("1 "); } else if(o%2==0&&l%2!=0) { printf("0 "); } else if(l%2!=0&&o%2!=0) { printf("100 "); } else if(l%2==0&&o%2==0) { printf("10 "); } } return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 320KB, 提交时间: 2022-06-06
#include<stdio.h> int main() { int n; scanf("%d", &n); int arr[n]; for (int i = 0; i < n; i++) { int l=0, o = 0; scanf("%d", &arr[i]); int val = arr[i]; while (val) { if (val % 2 == 1) { //1010 l++; } else { o++; } val = val / 2; } if ((l % 2 == 0) && (o % 2 != 0)) { printf("1 "); } else if ((l % 2 != 0) && (o % 2 == 0)) { printf("0 "); } else if (l % 2 == 0 && o % 2 == 0) printf("10 "); else { printf("100 "); } } return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 328KB, 提交时间: 2022-06-11
#include<stdio.h> int main() { int n,m[200]; scanf("%d",&n); for(int i=0;i<n;i++)//1100 { int o=0; int l=0; scanf("%d",&m[i]); int j=m[i]; while(j) { if(j%2==1) l++; else o++; j/=2; } if(l%2==0&&o%2!=0) { printf("1 "); } else if(o%2==0&&l%2!=0) { printf("0 "); } else if(l%2!=0&&o%2!=0) { printf("100 "); } else if(l%2==0&&o%2==0) { printf("10 "); } } return 0; }