题目描述:
给定N个非负整数,将这N个数字按二进制下的1的个数分类,二进制下1的个数相同属于同一类,求最后共有几类数字。
输入:
1 有几组数
5 每一组数有几个数
8 3 5 7 2 每组数下的数
输出:3
实现(python):
定义一个函数可以返回一个数二进制下1的个数,遍历数组,就可以返回这组数下的所有二进制的个数,最后按个数进行分组。
def count(num):
cnt = 0
while num:
if num & 1 == 1:
cnt += 1
num = num >> 1
return cnt
n=int(input())
for i in range(n):
m=int(input())
nums=[int(ele) for ele in input().split()]
ret=[]
for item in nums:
ret.append(count(item))
print(len(set(ret)))