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

百度笔试真题-最小对冲值(C++/Py/Java /Js/Go)

最小对冲值

百度技术岗 笔试真题 8月6号 第二题

题目内容

调度模块要把一个非负整型额度mmm拆成两份:任选整型yyy0≤y≤m0 \le y \le m0ym),另一份为m−ym-ymy。定义这次拆分的「对冲值」为
G(y)=y⊕(m−y)G(y)=y \oplus (m-y)G(y)=y(my)
其中⊕\oplus为按位异或(对应二进制位相同得000、不同得111)。例如6 (1102)6\ (110_2)6(1102)1 (0012)1\ (001_2)1(0012)满足6 xor 1=7 (1112)6\ \text{xor}\ 1 = 7\ (111_2)6xor1=7(1112)。现给定若干个额度,请对每个mmm求出可取到的最小对冲值。

输入描述

第一行一个整型nnn(1≤n≤105)(1 \le n \le 10^5)(1n105),表示随后有nnn行额度。
接下来nnn行,每行一个整型mmm(1≤m≤1018)(1 \le m \le 10^{18})(1m1018)
请对每个mmm逐一计算其最小对冲值。

输出描述

共输出nnn行;对于每一个mmm,写出一个非负整型,即
min⁡(0⊕m, 1⊕(m−1), 2⊕(m−2), …, m⊕0)\min\bigl(0\oplus m,\ 1\oplus(m-1),\ 2\oplus(m-2),\ \ldots,\ m\oplus 0\bigr)min(0m,1(m1),2(m2),,m0)

样例1

输入

3 4 5 11

输出

0 1 3

说明
三个额度依次为4,5,114,5,114,5,11:取y=2y=2y=22⊕2=02\oplus 2=022=0;取y=2y=2y=22⊕3=12\oplus 3=123=1;取y=4y=4y=44⊕7=34\oplus 7=347=3

样例2

输入

2 2 7

输出

0 7

说明
额度222:取y=1y=1y=11⊕1=01\oplus 1=011=0。额度777:枚举可知最小对冲值为777

题解

思路

数学原理

  1. 二进制加法公式a + b = (a ^ b) + 2 * (a & b)=>a ^ b = a + b - 2 * (a & b)
  2. 对应到此题中y ^ (m - y) = m - 2 * (y & (m - y))最小值就是让y & (m - y)尽可能大。就是让两个数接近。所以选择两个数分别为m /2(m + 1) /2

C++

#include<bits/stdc++.h>usingnamespacestd;intmain(){ios_base::sync_with_stdio(false);cin.tie(nullptr);intT;cin>>T;while(T--){intm;cin>>m;cout<<((m/2)^((m+1)/2))<<endl;}return0;}

java

importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);intT=sc.nextInt();while(T-->0){intm=sc.nextInt();System.out.println((m/2)^((m+1)/2));}sc.close();}}

python

importsys# 读取输入data=sys.stdin.read().split()T=int(data[0])idx=1whileT>0:m=int(data[idx])idx+=1print((m//2)^((m+1)//2))T-=1

javascript

constreadline=require("readline");constrl=readline.createInterface({input:process.stdin,output:process.stdout});letinput=[];rl.on("line",function(line){input.push(...line.trim().split(/\s+/));});rl.on("close",function(){letidx=0;letT=Number(input[idx++]);console.log(T);while(T>0){T--;letm=Number(input[idx++]);console.log((Math.floor(m/2))^(Math.floor((m+1)/2)));}});

Go

packagemainimport("bufio""fmt""os")funcmain(){in:=bufio.NewReader(os.Stdin)varTintfmt.Fscan(in,&T)out:=bufio.NewWriter(os.Stdout)deferout.Flush()forT>0{varmintfmt.Fscan(in,&m)fmt.Fprintln(out,(m/2)^((m+1)/2))T--}}
http://www.cnnetsun.cn/news/3976466.html

相关文章:

  • 佳能TS3480 G3900 MX368 TS9580 IX6880 TS3380 MG3660 G3000清零软件5B00,5B02,5B04,1700,1702,1704,P07,E08亲测完美。
  • Ubuntu 20.04 磁盘分区实战指南:从原理到双系统安装
  • RAG(四):OpenRAG、Ragflow-Plus、LinearRAG、Cache-AG、Context-AG
  • Mac双系统忘记Windows密码?安全重置指南与风险规避
  • 彻底解决“学完就忘”:网安专属长期记忆知识固化学习法
  • 解决Chrome并行配置错误:VC++运行库修复与Windows SxS机制详解
  • 《Yakka.Dee》英语启蒙实战指南:从核心词汇到教学闭环
  • 从Cursor到Codex,从Skills到Harness:AI编程正在经历第三次范式迁移
  • PUBG压枪宏终极方案:罗技鼠标如何帮你告别后坐力烦恼?
  • MAIGateway,魔芋企业级AI网关的多模型统一接入设计
  • 03-企业分支规范讲解:Master/Develop/Feature/Bugfix/Release分支模型
  • AI扩图工具深度评测:7款免费在线工具实战指南与避坑技巧
  • Cursor中C/C++调试失效?版本兼容性问题分析与回退解决方案
  • 3步掌握OBS多路推流插件的专业部署方案
  • 3分钟免安装微信网页版解决方案:绕过公司限制的终极指南
  • AI编程顶配体验:GLM、ZCode与Agent实战测评与效能提升指南
  • 西班牙语外刊精读实战:从鲸鱼哺乳主题掌握A2-B1高效学习法
  • 构建健壮统一执行器:能力检测与模式回退架构实践
  • 遥感图像VEDAI数据集汽车车辆卡车飞机等检测数据集VOC+YOLO格式1245张11类别
  • UE5顶点绘制实现雨后积水与风干泥土混合材质
  • 终极指南:如何用Cowabunga Lite轻松定制iOS界面,无需越狱也能玩转iPhone个性化
  • 从零实现神经网络:用NumPy手写前向传播与反向传播
  • Windows 10访问Win7共享报错0x80070035:SMB协议与安全策略全解析
  • OpenMP并行编程三大性能陷阱:线程绑定、负载均衡与库冲突
  • 为AI Agent接入长期记忆:MemOS CLI轻量集成实战指南
  • 终极指南:5分钟掌握PUBG罗技鼠标宏压枪技巧
  • 动图图解单链表:从节点结构到五大核心操作与C语言实现
  • C++内存屏障:从编译器优化到多线程同步的底层原理与实践
  • 免费Windows内存优化神器:MemReduct 3.5.2终极使用指南
  • Docker化Hydra:构建Web登录自动化安全测试环境