1673 - 神奇的工号

ACM俱乐部里员工的都有一个工号,这个工号的二进制表达中1的个数越多,这个员工的级别就越高。

输入一个工号,求这个工号的二进制表达中1的个数。
例如输入10,由于其二进制表示为1010,有两个1,因此输出2。

题目输入

每组测试数据输入一行,每行输入一个整数(绝对值<=1000000)。

题目输出

每组测试数据输出一行,这个工号的二进制表达中1的个数。

输入/输出样例

题目输入

10
0
-32768

题目输出

2
0
17

C语言解答

/*
 * =====================================================================================
 *
 *       Filename:  902-1.c
 *
 *    Description: hahhahah 
 *
 *        Version:  1.0
 *        Created:  2013/9/2 21:01:28
 *       Revision:  none
 *       Compiler:  gcc
 *
 *         Author:  mdk-vim.cpp-c (mdk), mengdaikun@gmail.com
 *        Company:  cjluacm-vim-mdk
 *
 * =====================================================================================
 */
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>

int numberof1_total(unsigned int n)
{
    unsigned int ret = 0;

    while(n)
    {
        if(n & 1)
            ret++;
        n = n >>1;
    }
    return ret;
}

int main()
{
   // freopen("a.in","r",stdin);

    int n;

    while(~scanf("%d",&n))
    {
        printf("%d\n",numberof1_total(n));
    }
    
    return 0;
}

C++解答

#include <stdio.h>
int NumberOf1_Solution2(int i)
{
      int count = 0;
      unsigned int flag = 1;
      while(flag)
      {
            if(i & flag)
                  count ++;

            flag = flag << 1;
      }

      return count;
}
int main()
{
	int n;
	while(scanf("%d",&n)!=EOF)
		printf("%d\n",NumberOf1_Solution2(n));
	return 0;
} 
时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题