九度OJ 1513 二进制中1的个数
2014-02-16 14:03
288 查看
题目地址:http://ac.jobdu.com/problem.php?pid=1513
题目描述:
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
输入:
输入可能包含多个测试样例。
对于每个输入文件,第一行输入一个整数T,代表测试样例的数量。对于每个测试样例输入为一个整数。
。n保证是int范围内的一个整数。
输出:
对应每个测试案例,
输出一个整数,代表输入的那个数中1的个数。
样例输入:
样例输出:
解决方案一
解决方案二
参考资料:何海涛 -- 程序员面试题精选100题(22)-整数二进制表示中1的个数[算法]
题目描述:
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
输入:
输入可能包含多个测试样例。
对于每个输入文件,第一行输入一个整数T,代表测试样例的数量。对于每个测试样例输入为一个整数。
。n保证是int范围内的一个整数。
输出:
对应每个测试案例,
输出一个整数,代表输入的那个数中1的个数。
样例输入:
3 4 5 -1
样例输出:
1 2 32
解决方案一
#include <stdio.h> int Count (int n){ int cnt = 0; unsigned int flag = 1; while (flag){ if (n & flag) ++cnt; flag = flag << 1; } return cnt; } int main(void){ int T; int n; while (scanf ("%d", &T) != EOF){ while (T-- != 0){ scanf ("%d", &n); printf ("%d\n", Count (n)); } } return 0; }
解决方案二
#include <stdio.h> int Count (int n){ int cnt = 0; while (n){ ++cnt; n &= (n - 1); } return cnt; } int main(void){ int T; int n; while (scanf ("%d", &T) != EOF){ while (T-- != 0){ scanf ("%d", &n); printf ("%d\n", Count (n)); } } return 0; }
参考资料:何海涛 -- 程序员面试题精选100题(22)-整数二进制表示中1的个数[算法]
相关文章推荐
- 九度OJ-题目1513:二进制中1的个数
- 【九度OJ1513】|【剑指offer10】二进制中1的个数
- 【剑指Offer面试题】 九度OJ1513:二进制中1的个数
- 九度OJ 1513 二进制中1的个数
- 九度_题目1513:二进制中1的个数
- 九度OJ 1208 十进制vs二进制
- 九度OJ-1208-10进制VS二进制
- 剑指Offer - 九度1513 - 二进制中1的个数
- 九度oj 1380 lucky number + 二进制
- 九度 1513:二进制中1的个数
- 题目1513:二进制中1的个数-九度
- 九度 题目1513:二进制中1的个数
- 九度OJ 1101:计算表达式 (DP)
- 九度OJ 1113:二叉树 (完全二叉树)
- 九度OJ 1497 面积最大的全1子矩阵 -- 动态规划
- 九度OJ 1123:采药 (01背包、DP、DFS)
- 九度OJ 1133:学分绩点 (加权平均数)
- 九度OJ 1091 棋盘游戏
- 九度OJ 1153:括号匹配问题 (DP)
- 【学习笔记】〖九度OJ〗题目1186:打印日期