#P0777. 二进制求 1 的个数

二进制求 1 的个数

题目描述

给定一个长度为 nn 的数列,数列中的每个元素都是一个整数。对于数列中的每一个数,我们需要求出它的二进制表示中 11 的个数,并将这些个数输出。

输入格式

输入的第一行是一个整数 nn1n1061 \le n\le10^6),表示数列的长度。

输入的第二行包含 nn 个整数 aia_i0ai1090 \le a_i\le10^9),每个整数之间用空格分隔。

输出格式

输出一行,包含 nn个整数,第 ii 个整数表示数列中第 ii 个数的二进制表示中 11 的个数。整数之间用空格分隔。

样例

5   
4 8 15 16 23
1 1 4 1 4

提示

样例1解释

  • 第一个数 44 的二进制表示为 100100,其中 11 的个数为 11
  • 第二个数 88 的二进制表示为 10001000,其中 11 的个数为 11
  • 第三个数 1515 的二进制表示为 11111111,其中 11 的个数为 44
  • 第四个数 1616 的二进制表示为 1000010000,其中 11 的个数为 11
  • 第五个数 2323 的二进制表示为 1011110111,其中 11 的个数为 44

数据范围

  • 测试点 1101 - 10 满足 1n1031 \le n\le10^30ai1060 \le a_i\le10^6
  • 测试点 112011 - 20 满足 1n1051 \le n\le10^50ai1090 \le a_i\le10^9
  • 测试点 212521 - 25 满足 1n1061 \le n\le10^60ai1090 \le a_i\le10^9