
异或(^)性质:两者不同的部分,在二进制中体现为1 ^ 0 = 1 ,0 ^ 1 = 1,其他情况都为0;
由定义可知
1.如果一个数n出现数为奇数次的话,反复异或值为n,否则出现为偶数次为0;
2.一个数n异或0为n即0 ^ n = n;
3.异或满足交换律即a ^ b = b ^ a;
可以借此性质来推断异或可以来统计整数数量的奇偶性
在例题中,我们可以理解先将9个数中的奇数提出一个
1 1 2 2 3 3 3 3
2
先对上面异或再用上面的值与下面异或
#include<bits/stdc++.h>
using namespace std;
#define sub substr
#define ll long long
#define ios ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define endl '\n'
#define inf 0x3f3f3f3f
#define llinf 0x3f3f3f3f3f3f3f3f
#define map unordered_map
#define pqu priority_queue /*优先队列 */
#define pb push_back
#define pf push_front
#define eb emplace_back
#define ppb pop_back
#define fbo friend bool operator <
using vi

利用异或性质解决数学问题,通过位运算统计奇数出现次数。先将9个数中的奇数异或得到一个值,再与剩余数异或,揭示整数奇偶性。难度在于如何巧妙应用位运算法则。
最低0.47元/天 解锁文章
4661

被折叠的 条评论
为什么被折叠?



