阿里笔试题:或运算的最小翻转次数 C++

  • 题目描述
  • 输入输出示例
  • 解题思路
  • 代码

题目描述

给出一个数字n,表示有n组输入用例子,每一组输入给出三个正整数a、b、c,可以对a和b进行位翻转操作,每一次操作可以翻转a或b的某一位,比如0010操作一次可以得到0011,求使得 a∣b=ca|b=ca∣b=c 成立的最小操作次数。∣|∣ 表示按位或操作。

输入输出示例

输入:
1
2,6,5
输出:
3
解释:
a = 0010,b = 0110,c = 0101
对最低位进行一次翻转操作,对a和b第二位各进行一次翻转操作,一共三次。

解题思路

可以按位读取a、b、c,若ai∣bi=cia_i|b_i = c_iai​∣bi​=ci​,本位不需要操作,否则分类讨论,若 ci=0c_i=0ci​=0,说明 aia_iai​ 和 bib_ibi​ 至少有一位是1,要进行1到2次操作,取决于 aia_iai​ 是否等于 bib_ibi​;当 ci=1c_i = 1ci​=1 时,说明说明 aia_iai​ 和 bib_ibi​ 都为0,所以进行一次操作即可。
在编写代码时,可以通过 a&1来取a的最后一位,任何数字和1按位与都能得到最后一位。

代码

#inlcude <iostream>
using namespace std;
int main(){int n;cin>>n;while(n--){int a,b,c;cin>>a>>b>>c;int res = 0;// 只要a,b,c有任何一个还不为0,就要继续操作while(a>0 || b>0 ||c>0)  {// 任何数字和1按位与操作就可以得到最后一位int alast = a & 1;int blast = b & 1;int clast = c & 1;if((alast | blast) != clast){if(clast == 1) res += 1;else res += alast==blast?2:1;}// 三个数字各删去最后一位,高位降低一位a = a >> 1;b = b >> 1;c = c >> 1;}cout<<res<<endl;}
}

阿里笔试题:或运算的最小翻转次数 C++相关推荐

  1. 算法--运算的最小翻转次数

    题目 给你三个正整数 a.b 和 c.你可以对 a 和 b 的二进制表示进行位翻转操作,返回能够使按位或运算 a OR b == c 成立的最小翻转次数.「位翻转操作」是指将一个数的二进制表示任何单个 ...

  2. LeetCode 1318. 或运算的最小翻转次数(位运算)

    1. 题目 给你三个正整数 a.b 和 c. 你可以对 a 和 b 的二进制表示进行位翻转操作,返回能够使按位或运算 a OR b == c 成立的最小翻转次数. 「位翻转操作」是指将一个数的二进制表 ...

  3. 阿里笔试题第二题之-------容错技术

    阿里笔试题第二题之---容错技术 定义:容错就是当由于种种原因在系统中出现了数据.文件损坏或丢失时,系统能够自动将这些损坏或丢失的文件和数据恢复到发生事故以前的状态,使系统能够连续正常运行一种技术. ...

  4. 2020年3月25日阿里笔试题

    2020年3月25日阿里笔试题 题目描述一 python代码 题目描述二 求公差的python代码 处理上述情况的代码   仿佛人生总有一种魔咒,自己做的这场笔试题永远是最难的.不过今天的笔试题,真的 ...

  5. 阿里笔试题(2015)持续更新中

    第一次做阿里笔试题,除了ACM题之外从来没有做过校招网络题呀,完全是裸考,总体感觉吧,对于我来说,感觉时间不够用,不是题不会,感觉时间紧,大脑很混乱,总结这一次的笔试题 废话不多说,直接上题和答案 平 ...

  6. java类初始化顺序-阿里笔试题

    阿里笔试题之写出程序输出结果: package com.patrick.bishi;public class TestVar {public static int k = 0;public stati ...

  7. 2020年3月23日阿里笔试题

    2020年3月23日阿里笔试题 题目描述 题目分析   这是阿里的第二场笔试,本来觉得没啥好写的,一道排列组合,一道迷宫.没有什么发挥的空间.但是后来在和大家讨论的过程中,把这道题的公司给敲出来了,但 ...

  8. 995. K 连续位的最小翻转次数

    链接:995. K 连续位的最小翻转次数 题解: https://leetcode-cn.com/problems/minimum-number-of-k-consecutive-bit-flips/ ...

  9. Leetcode-滑窗/差分数组-995. K 连续位的最小翻转次数

    题目995. K 连续位的最小翻转次数: 题解: 方法一:队列 + 滑窗(from 负雪明烛) class Solution { public:int minKBitFlips(vector<i ...

最新文章

  1. 用Python就可以给你的头像戴上圣诞帽,别@微信团队了!
  2. python not instance_python isinstance 判断各种类型的小细节|python3教程|python入门|python教程...
  3. Flutter设置允许HTTP访问
  4. python 微服务框架_Python微服务架构chili_chicken
  5. csrss.exe病毒查杀
  6. php图片大马加后门,一次对php大马的后门的简单分析
  7. C++命名空间中类声明、成员函数声明和函数模板
  8. 明日之后在同一个服务器找不到人,明日之后怎么跨区加好友 看这里
  9. 21受限玻尔兹曼机RBM
  10. 如何在庞大的ip地址库中快速定位到对应的ip地址所对应的归属地?
  11. 为什么别人不回你的微信?说说如何正确的提问
  12. 数据结构形象动态演示的网站
  13. Lua源码分析 - 虚拟机篇 - 语义解析之Opcode生成(17)
  14. 深度学习(目标跟踪和目标检测)--边界框bbox坐标转换(任意格式【list,numpy,tensor】、任意维度【向量、一维矩阵、二维矩阵】)
  15. springboot学习之旅12-安全
  16. 信道通信基础 - 传输介质(双绞线、光纤)
  17. 中文出现乱码最常见的几种方式解析
  18. 倒计时翻牌器动画实现
  19. 百度沈抖:聚焦场景深耕行业,为企业数字化带来实际成效
  20. Python实现摄像头状态巡检

热门文章

  1. 随机生成10个包含数字、字母的8位数密码
  2. strlen 头文件 linux,seizeof()和strlen()的区别
  3. HTML模板布局页面教程,css网页布局教程 标签 HTML Nav CSS布局教程
  4. idea 部分代码合并、cherry-pick 摘樱桃
  5. oracle access advisor,使用Oracle SQL Access Advisor改善数据库索引与物化视图
  6. PC企业微信4.0 HOOK逆向
  7. 如何优雅地使用 macOS
  8. delphi 裁剪mp3_用delphi编写mp3播放器
  9. 头条视频伪原创 视频去md5
  10. 离开学校如何成为网页设计师1