问题:
给定N个非负整数,将这N个数字按照二进制1的个数分类,二进制下1的个数相同的数字属于同一类,求最后一共有几类数字?
输入描述:
输入的第一行是一个正整数T(0<T<=10),
表示样例个数。对于每一个样例,第一
行是一个正整数N(0<N<=100),表示有
多少个数字。接下来一行是N个由空格分
隔的非负整数,大小不超过2^23-1
输出描述:
对于每一组的样例,输出一个正整数,表示输入的数字一共有多少类
输入:
1
5
8 3 5 7 2
输出:
3
实现代码:
package 网易互娱;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class Main {
public static void main(String [] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int row = sc.nextInt();
int col = sc.nextInt();
int num[][] = new int[row][col];
for(int i =0; i<row;i++){
for(int j= 0;j<col;j++){
num[i][j] = sc.nextInt();
}
}
for(int i = 0;i<num.length;i++){
Set<Integer> sets = new HashSet<Integer>();
for(int j= 0;j<num[0].length;j++){
int count = 0;
int m = num[i][j];
while(m>0){
m = m&(m-1);
count++;
}
sets.add(count);
}
System.out.print(sets.size()+" ");
}
}
}
}