首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
不上岸不改名!.
无锡高等师范学校 算法工程师
关注
已关注
取消关注
上岸!
@不上岸不改名!.:
二进制差异数(C++ ) 刷题记录
题库目录2023华为OD备考【转载】题目描述对于任意两个正整数A和B,定义它们之间的差异值和相似值:**差异值:**A、B转换成二进制后,对于二进制的每一位,对应位置的bit值不相同则为1,否则为0;**相似值:**A、B转换成二进制后,对于二进制的每一位,对应位置的bit值都为1则为1,否则为0;现在有n个正整数A0到A(n-1),问有多少(i, j) (0<=i<j<n),Ai和Aj的差异值大于相似值。假设A=5,B=3;则A的二进制表示101;B的二进制表示011;则A与B的差异值二进制为110;相似值二进制为001;A与B的差异值十进制等于6,相似值十进制等于1,满足条件。输入描述一个n接下来n个正整数数据范围:1<=n<=10^5,1<=A[i]<2^30输出描述满足差异值大于相似值的对数用例<table><tbody><tr><td>输入</td><td>4<br>4 3 5 2</td></tr><tr><td>输出</td><td>4</td></tr><tr><td>说明</td><td>满足条件的分别是(0,1)(0,3)(1,2)(2,3),共4对。</td></tr></tbody></table>题目解析题目描述中,A,B差异值其实就是A和B二进制的按位异或运算,即A ^ B。A,B相似值其实就是A和B二进制的按位与运算,即A & B。本题主要是找规律:本题的规律其实很容易发现,那就是看A,B的最高位1是否处于相同位,如果相同,比如A:1010B:1100那么差异值就是0110,相似值就是1000,可以发现,A,B最高位的1,在按位异或运算下被换成0,在按位与的运算下,变成了1,因此这种情况下,相似值必然大于差异值,不符合要求。如果A,B的最高位1不处于相同位,比如A:1010B:0110那么差异值就是1100,相似值就是0010,可以发现,A,B的最高位不同,因此按位异或运算下被换成了1,而按位与运算下变成了0,因此这种情况下,差异值必然大于相似值,符合要求。总结:差异值的最高位为1,相似值的最高位为0。因此我们只要找到最高位的1的种类,然后相互组合即可。C++#include<iostream> //头文件,用于输入输出#include<vector> //头文件,用于使用vector容器#include<algorithm> //头文件,用于使用算法函数#include<bitset> //头文件,用于使用二进制位操作using namespace std; //命名空间vector<int> split(string str) { //定义函数split,将字符串转换为整数vector vector<int> nums; //初始化整数vector while (str.find(" ") != string::npos) { //当字符串中还有空格时 int found = str.find(" "); //找到空格的位置 nums.push_back(stoi(str.substr(0, found))); //将空格前的字符串转换为整数并加入vector str = str.substr(found + 1); //将字符串更新为去除空格的后半部分 } nums.push_back(stoi(str)); //将最后一部分字符串转换为整数并加入vector return nums; //返回整数vector}int main() //主函数{ string param_str; //定义字符串param_str,用于存储输入的第一行字符串 getline(cin, param_str); //读取一行字符串 int n = stoi(param_str); //将字符串转换为整数 string op_str; //定义字符串op_str,用于存储输入的第二行字符串 getline(cin, op_str); //读取一行字符串 vector<int> nums = split(op_str); //将字符串转换为整数vector vector<int> bit_info(100, 0); //定义长度为100的整数vector,初始化为0 for (auto num : nums) { //遍历整数vector bitset<32> num_binary(num); //将整数转换为32位二进制数 string num_binary_str= num_binary.to_string(); //将二进制数转换为字符串 num_binary_str.erase(0,num_binary_str.find_first_not_of("0")); //去除字符串前面的0 int len = num_binary_str.size(); //计算字符串长度 if ("" == num_binary_str) { //如果字符串为空 bit_info[0]++; //将bit_info[0]加1 } else { //否则 bit_info[num_binary_str.size()]++; //将bit_info[字符串长度]加1 } } int res = 0; //定义整数res,初始化为0 for (int i = 0; i < bit_info.size(); i++) { //遍历bit_info for (int j = i + 1; j < bit_info.size(); j++) { //遍历bit_info res += bit_info[i] * bit_info[j]; //计算res的值 } } cout<< res; //输出res的值 return 0; //程序结束}
点赞 0
评论 0
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
07-18 13:44
门头沟学院 客户端其它
实习,别太较真
准备好,接下里将进去压抑的一分钟。实习之前:做了个烂大街的项目,懂了点CURD,会用数据库建个表,搞了个分页查询,出BUG就用Idea打断点,然后Debug看看是哪有问题,找到问题所在处,发现不会解决,又上百度搜怎么解决,挨个方案尝试,发现都不行,中午吃饭刷抖音发现可以用Ai,下午又鼓捣鼓捣给Idea安装Ai插件,费劲巴力安装上之后,发现不像推销的那么好用,然后就卡住了。实习之后:幻想自己接到到一个酷酷的需求,左盼右盼等来了需求,又发现自己不熟悉项目,做不出来这个需求,开始焦虑上火,对自己丧失信心,感觉自己怎么这么笨。好了,压抑到此结束。其实,要明白一个事情,我们不可能很快的适应一个新的环境,...
hokaze:
索隆哥,闲暇时间根本看不下去八股咋办
下班回去更不想看
入职半个月了,觉得之前为了找实习背的八股和做的项目全是玩具
你以为的实习VS真实的实...
点赞
评论
收藏
分享
07-18 14:03
门头沟学院 Java
小鹏简历秒挂
给我挂破防了 我的简历有这么差吗....?技术岗挂我我也认了 凭什么管培也挂我
KissinU_:
can can need 简历
点赞
评论
收藏
分享
06-23 11:28
门头沟学院 Java
这一块儿/.
这一块儿/.
牛客91966197...:
也有可能是点拒绝的时候自动弹的话术
点赞
评论
收藏
分享
不愿透露姓名的神秘牛友
昨天 17:59
实习三天,就开始替mt背锅了?
早上来没太多工作,快到饭点同组另一个mentor爆发,说配的不对,可是又不是我配的,是我mentor配的,莫名其妙挨骂,来找我??我的mentor还没来上班,我将对这份工作毫无热情
实习生的蛐蛐区
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
百度提前批一面
1.1W
2
...
滴滴提前批面经
6420
3
...
实习,你就这么偷
5344
4
...
我曾经以为自己熬过了三阶段已经无敌,但现在却见证了逆天的第四阶段
5272
5
...
如何平衡暑期实习与秋招
3467
6
...
从中山大学到中兴 SSP:我的秋招打怪升级之路
3216
7
...
天呐,公司怎么这样对我!!!
3101
8
...
27届前端七月找实习记录
3088
9
...
不偷师 不出师!!
2463
10
...
大三双非水产专业上岸阿里后端(一)
2347
创作者周榜
更多
正在热议
更多
#
实习如何「偷」产出?
#
10101次浏览
124人参与
#
除了主业以外,你还有哪些其他收入?
#
2008次浏览
48人参与
#
实习打杂,要跑路吗
#
5951次浏览
86人参与
#
风评不好的公司,你会去吗?
#
39509次浏览
260人参与
#
校园里的破防时刻
#
3536次浏览
47人参与
#
百度秋招提前批进度
#
108100次浏览
1138人参与
#
职场新人体验
#
7671次浏览
87人参与
#
蔚来求职进展汇总
#
92511次浏览
769人参与
#
为什么那么多公司毁约
#
180639次浏览
1338人参与
#
第一份工作应该选高薪还是热爱?
#
75667次浏览
728人参与
#
设计人如何选offer
#
126845次浏览
746人参与
#
学历贬值真的很严重吗?
#
27183次浏览
186人参与
#
一人推荐一个值得去的通信/硬件公司
#
187714次浏览
1865人参与
#
秋招结束之后的日子
#
77233次浏览
940人参与
#
你觉得早上几点上班合适?
#
74043次浏览
308人参与
#
你觉得现在还能进互联网吗?
#
16102次浏览
178人参与
#
24届软件开发秋招薪资爆料
#
355456次浏览
1229人参与
#
秋招签约后的心态变化
#
84514次浏览
824人参与
#
不考虑薪资和职业,你最想做什么工作呢?
#
94026次浏览
696人参与
#
外包能不能当跳板?
#
38336次浏览
229人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务