博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面试题10 二进制中1的个数
阅读量:2402 次
发布时间:2019-05-10

本文共 1004 字,大约阅读时间需要 3 分钟。

地址:http://ac.jobdu.com/problem.php?pid=1513

题目1513:二进制中1的个数

题目描述:

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

输入:

输入可能包含多个测试样例。

对于每个输入文件,第一行输入一个整数T,代表测试样例的数量。对于每个测试样例输入为一个整数。
。n保证是int范围内的一个整数。

输出:

对应每个测试案例,

输出一个整数,代表输入的那个数中1的个数。

样例输入:
345-1
样例输出:
1232
解题思路:

数(a-1)& a 获得数a消去了从右到左的第一个1的数a'。

例如:

10 == 1010

1010 - 1 = 1001

1001 & 1010 == 1000

不断重复以上过程,直到a == 0.至此,重复的次数 == a中含有1的个数。

#include 
int main(){ int n; while(scanf("%d", &n) != EOF) { int a = 0; while(n --) { scanf("%d", &a); if (a == 0) { printf("0\n"); continue; } int i = 0; do { a = (a - 1) & a; i ++; }while(a != 0); printf("%d\n", i); } } return 0;}/************************************************************** Problem: 1513 Language: C++ Result: Accepted Time:80 ms Memory:1020 kb****************************************************************/

转载地址:http://hhsob.baihongyu.com/

你可能感兴趣的文章
java实现屏幕取色
查看>>
[转载]项目经验二则:读取war包中的文件及Ant使用中的OutOfMemoryError解决
查看>>
[转载]实例讲解配置之——TOMCAT集群配置
查看>>
[转载]彻底转变流,第 2 部分:优化 Java 内部 I/O
查看>>
[转载]SWT 和 JFace, 第 2 部分: 简介
查看>>
[转载]ZX手机平台的几个问题
查看>>
[转载]JDBC编程基础
查看>>
[转载]Java手机游戏编程之MIDP图形设计篇
查看>>
[转载]Java Servlets编程指南(十八)
查看>>
DNS配置全文(转)
查看>>
程序界的高手传奇(转)
查看>>
CVS-RCS(2)(转)
查看>>
CVS-RCS(3)(转)
查看>>
CVS-RCS(5)(转)
查看>>
安装Linux的五种方法和心得(转)
查看>>
好用的工具checkinstall(转)
查看>>
了解Debian 系统(转)
查看>>
Solaris下Domino数据的移植(转)
查看>>
ReiserFS文件系统坏块的处理(转)
查看>>
终于把TeX+CJK搞定啦(转)
查看>>