题目
给定一个长度为 n 的数列,请你求出数列中每个数的二进制表示中 11 的个数。
输入格式:
第一行包含整数 n
第二行包含 n 个整数,表示整个数列。
输出格式:
共一行,包含 n 个整数,其中的第 i 个数表示数列中的第 i 个数的二进制表示中 1 的个数。
数据范围:
1≤n≤100000 0≤数列中元素的值≤10^9
输入样例:
5
1 2 3 4 5
输出样例:
1 1 2 1 2
代码
java
package Acwing.basicAlgorithm;
import java.util.Scanner;
public class 二进制中1的个数_801 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
// int[] a = new int[n];
for (int i =0 ;i < n;i ++) {
int x = in.nextInt();
int count = 0;
while (x != 0) {
count ++;
x -= bit(x);
}
System.out.print(count + " ");
}
}
public static int bit(int x) {
return x & -x;
}
//java中把统计二进制个数方法封装在jdk中了,可以直接调用Integer类中的bitCount方法
//import java.io.BufferedInputStream;
//import java.util.Scanner;
//
// public class Main {
//
// public static void main(String[] args) {
// Scanner scanner = new Scanner(new BufferedInputStream(System.in));
// int n = scanner.nextInt();
// for(int i=0;i<n;i++) {
// System.out.print(Integer.bitCount(scanner.nextInt())+" ");
// }
// scanner.close();
// }
//
// }
}