ac_801二进制中1的个数
题目描述
题目大意&链接
求出给定数列中每个数的二进制表示中 1 的个数。
输入输出样例:
输入:
5
1 2 3 4 5
输出:
1 1 2 1 2
解题思路
这题求二进制数就是采用“除基取余”法:
- 将一个数除以2得到的余数作二进制数的数值位(低位),循环进行直到这个数除以2商是0,它的余数为最高位,这样的余数组成的数就是这个数的二进制数:
int tmp = q[i], cnt = 0;
while(tmp != 0)
{
if(tmp % 2 == 1) cnt++;
tmp/=2;
}
printf("%d ", cnt);
完整代码
|
时间和空间复杂度
时间复杂度:O(n)
空间复杂度:O(n)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 ZW_Blog!