c++: ^=(异或)的一个妙用

发布时间:2025-03-28 08:57

去除冰箱异味:放一碟醋或者半个柠檬,可以吸附异味 #生活知识# #生活妙招# #日常生活窍门# #厨房烹饪小绝招#

最新推荐文章于 2025-02-06 20:10:45 发布

NsfNSF 于 2019-09-19 22:34:01 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

C++ : ^=(异或的一个妙用)

妙用在于: 对于一个元素为整数的数列,其中只有一个数只出现过一次,其他的数都是出现两次,要求找到并输出那唯一一个数.

代码如下:

#include<iostream> #include<vector> using namespace std; int main() {int res = 0;vector<int> a{ 1,2,2,3,4,4,1 };for (int i = 0; i < a.size() ; i++){res ^= a[i];cout << res << ",";}return 0; }

1234567891011121314151617

输出的最后一个res就是所求的答案,也就是数字3.!!
关键在于异或运算的特殊性。对于一个整数而言,它与自身的异或为0,而0与任何数字的异或结果为任何数字。
对于本题而言,{1,2,2,3,4,4,1},res的最终结果就可以看成是下面一系列异或运算的叠加。

0 0 0 0 ^0 0 0 1 -----------(1) ^0 0 1 0 -----------(2) ^0 0 1 0 -----------(3) ^0 0 1 1 -----------(4) ^0 1 0 0 -----------(5) ^0 1 0 0 -----------(6) ^0 0 0 1 -----------(7) 123456789

因为异或运算服从交换律和结合律,所以我们先算(1)异或(7) = 0,而0对异或的结果没有影响。同理,(2)异或(3)=0,(5)异或(6) = 0,那剩下的就是 0异或(4),结果自然是(4),也就是那个唯一的只出现一次的数字3:)

网址:c++: ^=(异或)的一个妙用 https://www.yuejiaxmz.com/news/view/839069

相关内容

如图,AB、AC与⊙O相切于点B、C,∠A=50゜,P为⊙O上异于B、C的一个动
冰箱有异味怎么除去小妙招
10个去除异味的小妙招:家里没异味!
汽车空调A/C开关的五大妙用,就连老司机也不一定知道
家用冰箱有异味的原因 家用冰箱除异味常用小妙招
C语言在生活中的应用 …
如何快速清理C盘垃圾(有效清理C盘垃圾的小妙招)
家里有异味怎么办?这几个去除异味的小妙招你一定要知道!
100个实用生活小妙招
去除新房异味的22个妙招

随便看看