首页 > 其他分享 >Acwing 801.二进制中1的个数

Acwing 801.二进制中1的个数

时间:2024-09-28 14:11:37浏览次数:1  
标签:反码 二进制 .... 补码 int 10000 801 Acwing

题意:
给定一个长度为$n$的数列,请你求出数列中每个数的二进制表示中 $1$


算法1

(lowbit())

0.预备知识

1.原码:符号位加上真值的绝对值

2.反码:正数的反码是其本身,负数的反码是在其原码的基础上符号位不变,其余各个位取反。

3.补码:正数的补码就是其本身,负数的补码是在其反码的基础上+1

4.移码:不管正负数,只要将其补码的符号位取反即可

一个整数的负数就是补码+1

1.lowbit()

返回x的最后一位1

       x =   1010....10000
 
       ~x =  0101....01111
 
      ~x+1 = 0101....10000

  x&(~x+1) = 0000....10000

2.主要思路

1.每一次把最后一位1 去掉(减掉)

2.当 x == 0 时,说明没有1了

3.减的次数就是 x的二进制中1的个数

c++代码

#include <bits/stdc++.h>
using namespace std;

const int N = 1e6+10;

int n;
int a[N];

int lowbit(int x){  //返回x中最后一位1
    return  x & -x;  //一个整数的符数就是补码 +1
}
int main(){
    cin>>n;
    
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
   
    for(int i=1;i<=n;i++){
        int res=0;
        while(a[i]){
            a[i]-=lowbit(a[i]);
            res++;
        }
        cout<<res<<" ";
    }
    return 0;
}

n的二进制表示中第k位是几

n >> k & 1;

for(int k = 31; k >= 0; k--){

    cout<< (n >> k & 1);
}

标签:反码,二进制,....,补码,int,10000,801,Acwing
From: https://www.cnblogs.com/ltphy-/p/18437928

相关文章

  • 二进制、八进制、十进制、十六进制使用场景
    在编程和计算机系统中,二进制、八进制、十进制、十六进制都是用于表示数值的不同进制系统。每种进制在不同的场景中有其特定的应用。以下是它们的常见使用场景及原因:1.二进制(Binary,基数2)表示形式:由0和1组成,通常以0b或b为前缀表示(例如:0b1010表示十进制中的10)。使用场景:......
  • git 清除二进制文件的 changes 状态
    问题:某个分支上修改了二进制文件,导致changes一直存在,切换到主分支也仍然存在,点击Discard也没用使用gitreset--hard还原到初始状态,也不行,不过输出结果会给出错误信息Encountered7file(s)thatshouldhavebeenpointers,butweren't:解决方法:根据这个线索......
  • VB.net(C#同理)使用 ServiceStack.Redis 二进制存储、读取图像
    搜索了一下,网上似乎没有相关的内容,于是把自己探索的经验写一下。'安装提示:首先需要把当前的目标框架设置为.NetFramwork4.5。'方法一:复制ebay订单里的DLL\ServiceStack.Redis(整个文件夹),自行添加引用(4个dll)'方法二:使用Nuget安装servicestack.redis,选择5.0版本PublicClas......
  • centos7二进制安装Hadoop3
    一、Hadoop简介1.1Hadoop3核心组件HDFS:分布式文件系统:解决海量数据存储YARN:集群资源管理和任务调度框架:解决资源任务调度MapReduce:分布式计算框架:解决海量数据计算1.2Hadoop集群简介Hadoop集群包括两个集群:HDFSYARN两个集群逻辑上分离(互不影响、互不依赖)物理上一......
  • 进制数知识(2)—— 浮点数在内存中的存储 和 易混淆的二进制知识总结
    目录1.浮点数在内存中的存储1.1浮点数的大V表示法1.2浮点数的存储格式1.3 浮点数的存入规则1.4 浮点数的读取规则1.5补充:移码与掩码1.6 题目解析2. 易错的二进制知识2.0 符号位到底会不会参与运算?2.0.1存储前的编码变化运算2.0.2存储后的数值算术运算2......
  • Luogu_P10977(AcWing_299) Cut the Sequence 题解
    解题思路考虑线性dp。首先如果存在\(a_i>m\),那肯定不满足条件,输出\(-1\)。设\(f_i\)表示前\(i\)个数分成若干段,然后每段最大数之和,其中每段内的整数之和不超过\(m\)。\(f_i\)肯定是由\(f_j\)(\(1\lej<i\))转移过来的,也就是前\(j\)个数分好后再加上\((j,i]\)这一......
  • ABC245G Foreign Friends 题解 / 二进制分组
    ABC245GForeignFriends题解回顾一下二进制分组。题目大意给定一张\(N\)个点\(M\)条边的无向图,及\(L\)个特殊点。每个点有颜色\(C_i\)。求每个点到离他最近的与他颜色不同特殊点的距离。Solve两个点颜色不同,等价于他们的颜色在二进制下至少有一位不同。所以我们考......
  • 万象更新 Html5 - h5: h5 IndexedDB: 保存二进制数据
    源码https://github.com/webabcd/Html5作者webabcd万象更新Html5-h5:h5IndexedDB:保存二进制数据示例如下:h5\indexedDB\demo3.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>IndexedD......
  • 直接通过修改二进制文件OpenSSH和OpenSSL的版本为最高版版本来达到形式主义等保要求的
    文章开头的解释和说明本篇文章是通过形式上修改二进制文件中的版本号来达到某些像行尸走肉机器人类形式主义要求的等保标准要求,来完成其要求的“安全加固”。我先吐槽一下,这些形式主义等保标准要求,只按照版本号比对来确定是否为最版本的检测逻辑来批量扫描,扫描出来的漏洞误报率......
  • 对二进制减法的理解
    以下内容是写在通过NandGame网站学习二进制运算的,但是没想到写了这么多,想着也可以单独发出来写到这里突然想到最近在《编码:隐匿在计算机软硬件背后的语言》这本书看到二进制减法的运算,作者一开始不是直接讲减数要转换成补码再计算,而是讲了十进制减法为了不使用借位如何方便计算......