news 2026/7/2 16:06:41

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
二进制不同位数【牛客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;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 17:06:42

TinyPro移动端适配方案的技术拆解

本文由TinyPro贡献者王晨光同学原创。 一、背景&#xff1a;让 TinyPro 真正“走到掌心里” TinyPro 是一套基于 TinyVue 打造的前后端分离后台管理系统&#xff0c;支持菜单配置、国际化、多页签、权限管理等丰富特性。 TinyPro 在桌面端具备良好的体验和模块化架构&#xf…

作者头像 李华
网站建设 2026/7/2 2:58:30

Java性能优化实战:20个核心技巧与案例

Java性能优化实战技术文章大纲性能优化的核心原则明确优化目标&#xff1a;响应时间、吞吐量、资源利用率遵循80/20法则&#xff0c;优先解决瓶颈问题测量优于猜测&#xff0c;基于数据驱动决策避免过度优化导致的代码可维护性下降JVM层优化策略内存管理优化&#xff1a;堆大小…

作者头像 李华
网站建设 2026/6/28 23:04:53

战略即增长:解析中网、里斯、特劳特赋能产业标杆的差异化“杀手锏

本文将详细分析中网、里斯和特劳特在战略赋能方面的各自优势与方法。首先&#xff0c;战略赋能的核心在于帮助企业提升竞争力和应对市场变化。接着&#xff0c;文章将探讨中网如何通过技术驱动和B2B增长方法&#xff0c;增强客户的市场响应能力。里斯则采用品类战略&#xff0c…

作者头像 李华
网站建设 2026/6/30 23:33:36

LLM知识随笔(二)--BERT

LLM知识随笔&#xff08;二&#xff09;–BERT 文章目录 LLM知识随笔&#xff08;二&#xff09;--BERT一、BERT&#xff1a;公认的里程碑1. BERT与GPT之间的区别&#xff1a;2.单向编码与双向编码的区别 二、BERT的结构&#xff1a;强大的特征提取能力1.ELMo、GPT、BERT三者区…

作者头像 李华
网站建设 2026/6/26 17:06:49

【软件测试】1_性能测试 _Locust简介安装

文章目录 一、Locust简介1.1 特点 二、Locust安装2.1 命令安装2.2 pycharm安装 一、Locust简介 Locust是一个开源的性能测试工具&#xff0c;主要思想就是模拟一群用户访问你的系统。 1.1 特点 1、在代码中定义用户行为 不需要安装笨重的软件&#xff0c; 只是简单的Python…

作者头像 李华