列表

详情


OR158. bitcount

描述

输入一个long类型的数值, 求该数值的二进制表示中的1的个数 .

输入描述

long 类型的数值

输出描述

该数值二进制表示中1的个数

示例1

输入:

3

输出:

2

说明:

3的二进制表示: 11, 所以1个数为2

示例2

输入:

65

输出:

2

说明:

65的二进制为:1000001,所以1的个数为:2

原站题解

C 解法, 执行用时: 2ms, 内存消耗: 312KB, 提交时间: 2021-09-18

#include <stdio.h>

int main()
{
    long int n;
    while(scanf("%ld",&n)!=EOF)
    {
        int sum=0;
        while(n!=0)
        {
            n=n&(n-1);
            sum++;
        }
        printf("%d\n",sum);
    }
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 348KB, 提交时间: 2021-04-16

#include <stdio.h>
int main(void)
{
    long num;
    for( ; scanf("%ld", &num) != EOF; ){
        int cnt = 0;   long weight = 1;
        while(num)
        {
            if(num & weight){
                cnt++;
                num ^= weight;
            }
            weight <<= 1;
        }
        printf("%d\n", cnt);
    }
    return 0;
}

上一题