当前位置: 首页 > news >正文

AcWing 801. 二进制中1的个数

题目来源:

找不到页面 - AcWing

代码实现:

#include<iostream>
using namespace std;
int lowbit(int x){
    return x&(-x);
}
int main(){
    int n;
    cin>>n;
    while(n--){
        int x;
        cin>>x;

        int res=0;
        while(x) x-=lowbit(x),res++;

        cout<<res<<' ';
    }
    return 0;
}

题目心得:

  1. (lowbit) O(nlogn)

    使用lowbit操作,进行,每次lowbit操作截取一个数字最后一个1后面的所有位,每次减去lowbit得到的数字,直到数字减到0,就得到了最终1的个数,
    lowbit原理

  2. 根据计算机负数表示的特点,如一个数字原码是10001000,他的负数表示形势是补码,就是反码+1,反码是01110111,加一则是01111000,二者按位与得到了1000,就是我们想要的lowbit操作

相关文章:

  • kamailio常见问题解答
  • 1-16 tortoiseGit分支与Git操作
  • Windows逆向工程入门之栈指令与核心机制深度解析
  • 什么是原型?
  • Yolov5算法原理
  • 15.1 Process(进程)类
  • 基于 energy (lcl v3.0) 跨平台GUI框架实现的 XTA SDK GUI 源码实现
  • 考研操作系统-----外存文件
  • MATLAB图像处理:图像分割方法
  • 使用conda update python将python3.6更新到python3.7版本出现bug:
  • 计算机组成原理第二章
  • 如何将ubuntu下的一个目录,保存目录结构为一个git仓库并上传
  • Python大数据可视化:基于大数据技术的共享单车数据分析与辅助管理系统_flask+hadoop+spider
  • docker部署dify结合deepseek构建知识库
  • three.js+WebGL踩坑经验合集(8.1):用于解决z-fighting叠面问题的polygonOffset远没我们想象中那么简单
  • 基于2025Python电商商品评论数据采集与分析可视化系统
  • IT : 是工作還是嗜好? Delphi 30周年快乐!
  • 【Java】分布式锁Redis和Redisson
  • c++ gcc工具链
  • 缓存穿透、缓存击穿、缓存雪崩的区别与解决方案
  • 中国女足将于5月17日至6月2日赴美国集训并参加邀请赛
  • 上海护师邢红获第50届南丁格尔奖,她为何能摘得护理界最高荣誉
  • 印度32座机场暂停民用航班运营,印称在边境多处发现无人机
  • 马云再次现身阿里打卡创业公寓“湖畔小屋”,鼓励员工坚持创业精神
  • 中国国家电影局与俄罗斯文化部签署电影合作文件
  • 梅花奖在上海|第六代“杨子荣”是怎样炼成的?