C ++中范围内一对的最大XOR值
问题陈述
给定范围[L,R],我们需要找到此范围内的两个整数,以使它们的XOR在两个整数的所有可能选择中最大
如果给定范围为L=1且R=21,则输出将为31,因为−31是15和16的XOR,并且在范围内最大。
算法
1. Calculate the (L^R) value 2. From most significant bit of this value add all 1s to get the final result
示例
#include <bits/stdc++.h>
using namespace std;
int getMaxXOR(int L, int R){
int LXR = L ^ R;
int msbPos = 0;
while (LXR) {
msbPos++;
LXR >>= 1;
}
int maxXOR = 0;
int two = 1;
while (msbPos--) {
maxXOR += two;
two <<= 1;
}
return maxXOR;
}
int main(){
int L = 1;
int R = 21;
cout << "Result = " << getMaxXOR(L, R) << endl;
return 0;
}输出结果
当您编译并执行上述程序时。它生成以下输出-
Result = 31
热门推荐
1 如何训练狗狗不叫
2 训练狗狗不叫
3 训练狗狗随行
4 怎么训练狗狗不叫
7 训练比熊狗狗教程
10 上海狗狗训练
11 怎么训练狗狗上厕所
12 训练狗狗趴下
13 狗狗服从训练
14 训练狗狗拒食
15 训练狗狗笑
16 训练狗狗大便
17 训练狗狗立
18 训练狗狗捡东西