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

二进制不同位数【牛客tracker 每日一题】

二进制不同位数

时间限制:1秒 空间限制:256M

知识点:位运算

网页链接

牛客tracker

牛客tracker & 每日一题,完成每日打卡,即可获得牛币。获得相应数量的牛币,能在【牛币兑换中心】,换取相应奖品!助力每日有题做,丰盈牛币日益多!

题目描述

给定两个正整数m mmn nn。将它们分别写成二进制串(不含前导0 00),从最低位对齐后进行比较。请计算在所有对应位上二进制数字不同的位数,记为f ( m , n ) f(m,n)f(m,n)

更形式化地,设x = m x=mx=mx o r xorxorn nn,则f ( m , n ) f(m,n)f(m,n)等于x xx的二进制表示中1 11的个数。

输入描述:

在一行上输入两个整数m , n ( 1 ≦ m , n ≦ 10 9 ) m,n(1≦m,n≦10^9)m,n(1m,n109),表示需要比较的两个正整数。

输出描述:

在一行上输出一个整数,表示m mmn nn的二进制表示中不同的位数f ( m , n ) f(m,n)f(m,n)

示例1

输入:

15 8

输出:

3

说明:

在这个样例中,m = 15 m=15m=15的二进制为( 1111 ) 2 (1111)_2(1111)2n = 8 n=8n=8的二进制为( 1000 ) 2 (1000)_2(1000)2
从最低位对齐后比较四个二进制位,有3 33个位置上的数字不同,因此答案为3 33

示例2

输入:

7 10

输出:

3

说明:

在这个样例中,m = 7 m=7m=7的二进制为( 111 ) 2 (111)_2(111)2n = 10 n=10n=10的二进制为( 1010 ) 2 (1010)_2(1010)2
补齐后比较四个二进制位:

解题思路

核心利用异或运算的特性(二进制位相同为0 00、不同为1 11),将问题转化为统计异或结果中1 11的个数;首先读取两个正整数m mmn nn,计算异或值x = m n x = m ^ nx=mnx xx的二进制中1 11的位置恰好对应m mmn nn二进制不同的位;随后采用高效位运算技巧(x & = x − 1 x \& = x-1x&=x1)统计1 11的个数,该操作每次消去x xx最右侧的1 11,循环执行至x xx0 00,统计循环次数即为答案;该方法无需补齐二进制位,时间复杂度仅为O ( l o g ( m a x ( m , n ) ) ) O(log(max(m,n)))O(log(max(m,n)))(与两数二进制位数相关),适配m 、 n ≤ 1 e 9 m、n≤1e9mn1e9的规模,避免了逐位遍历的冗余计算,精准且高效地得到两数二进制不同的位数。

代码内容

#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefunsignedlonglongull;typedefpair<ll,ll>pii;constll p=1e9+7;constll N=1e5+10;intmain(){ll m,n;cin>>m>>n;ll x=m^n;ll ans=0;while(x!=0){x&=(x-1);ans++;}cout<<ans<<endl;return0;}
http://www.jsqmd.com/news/285485/

相关文章:

  • MAC 怎样加密压缩 zip 包?
  • 救命神器10个AI论文写作软件,助本科生轻松搞定毕业论文!
  • Pixels 医疗影像一站式解决方案从入门到精通
  • Linux 内存管理中的 Overcommit(过度分配)机制及OOM Killer 的处理逻辑详解
  • MySQL InnoDB Cluster升级到MySQL 8.4.x
  • LangGraph MCP Tool Calling Agent:让企业级智能体开发不再头大
  • 2026年电动刮研刀厂家推荐,提升生产效率与加工精度
  • 做自媒体3年,终于找到稳定免费图床:CloudFlare-ImgBed实测
  • Mac Mouse Fix:让几十块的普通鼠标也能拥有丝滑触控板体验
  • 数列分块入门学习笔记
  • FastScheduler:让 Python 定时任务变得优雅简单
  • HanaVerse:把本地大模型变成二次元虚拟女友,这才是我们想要的 AI
  • 2026年物业管理行业发展核心趋势解析:服务升级与价值重塑
  • 从 0 到 1 认识大模型:核心原理与价值应用指南
  • Qt国际化实战指南:使用翻译官实现多语言应用
  • 实用指南:spark的静态内存管理机制
  • 智能体插件研发应该的技巧
  • 期货飞马柜台系统+超融合:全栈国产,节省超60%硬件成本!
  • Vue3登录注册验证码实战
  • 一张图看懂无线网络参考模型
  • Elcomsoft Advanced PDF Password Recovery: PDF 文件离线解密取证方案
  • 详解静态资源分配的三种流派
  • Java性能优化实战:20个核心技巧与案例
  • 详解无线网络中的“轮询 (Polling)”机制
  • TinyPro移动端适配方案的技术拆解
  • # 一篇文章带你彻底搞懂 IP 地址(真的懂那种)
  • BaSalam波斯语商品实体分类数据集分析报告-包含340万条商品记录涵盖多领域商品信息支持NLP研究电商应用开发-电商平台的自动化管理、精准营销、智能客服-波斯语NLP研究和电商应用开发
  • 乱中有序:详解 ALOHA 协议的两种形态
  • Unlikely argument type for equals(): JSONObject seems to be unrelated to String
  • Flutter + OpenHarmony 自动化测试全攻略:从单元测试到多设备真机云测 - 指南