AcWing - 二进制中1的个数(位运算)
发布日期:2021-07-01 00:21:52
浏览次数:3
分类:技术文章
本文共 803 字,大约阅读时间需要 2 分钟。
题目链接:
时/空限制:1s / 64MB题目描述
给定一个长度为n的数列,请你求出数列中每个数的二进制表示中1的个数。
输入格式
第一行包含整数n。
第二行包含n个整数,表示整个数列。
输出格式
共一行,包含n个整数,其中的第 i 个数表示数列中的第 i 个数的二进制表示中1的个数。
数据范围
1≤n≤100000,
数列中元素的值0≤数列中元素的值≤10^9输入样例
5
1 2 3 4 5
输出样例
1 1 2 1 2
解题思路
题意:求一个数二进制中1的个数。
思路:这个方法就多了,我们可以利用n >> k & 1求n的第k位数字,然后判断是不是1就行了,还有就是可以利用n & -n,返回n最后一位1,我们将每其减去,就相当于每消去一个1,直到n为0为止,减的过程中统计一下就行了。Accepted Code:
/* * @Author: lzyws739307453 * @Language: C++ */#includeusing namespace std;const int MAXN = 1005;int lowbit(int x) { return x & -x;}int Count(int n) { int res = 0; while (n) { res++; n -= lowbit(n); } return res;}int main() { int n; scanf("%d", &n); for (int i = 0; i < n; i++) { int x; scanf("%d", &x); printf("%d%c", Count(x), "\n "[i < n - 1]); } return 0;}
转载地址:https://lzyws739307453.blog.csdn.net/article/details/99862704 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月24日 17时43分19秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
昨天写的自动回帖机
2019-05-01
EDMA里TCC的作用
2019-05-01
关于TI DSP的EDMA
2019-05-01
关于Cache的dirty bit
2019-05-01
TMS320C64x+ DSP------Using Cache
2019-05-01
DAT_copy 产生的问题
2019-05-01
OV5620的视频驱动
2019-05-01
浏览器配置脚本的编写
2019-05-01
HTTP请求流程(一)----流程简介
2019-05-01
HTTP请求模型和头信息参考
2019-05-01
Http协议的Delete和Put方法是做什么的?怎么用?
2019-05-01
C++中两个类交叉定义或递归定义的解决办法
2019-05-01
String.format详解
2019-05-01
JSONObject、JSONArray
2019-05-01
JSON parse 错误: unexpected token at分析和解决
2019-05-01
python built-in function summary
2019-05-01
对于git/热部署/创建maven工程的小记录
2019-05-01
在jsp中调用本地外部json文件的解决方法
2019-05-01
ECharts is not Loaded解决方案
2019-05-01
ECharts地图显示不完整,只显示南海诸岛问题
2019-05-01