Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
Selected Reading
Maximum XOR value of a pair from a range in C++
Problem statement
Given a range [L, R], we need to find two integers in this range such that their XOR is maximum among all possible choices of two integers
If the given range is L = 1 and R = 21 then the output will be 31 as − 31 is XOR of 15 and 16 and it is maximum within range.
Algorithm
1. Calculate the (L^R) value 2. From most significant bit of this value add all 1s to get the final result
Example
#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;
}
Output
When you compile and execute the above program. It generates the following output −
Result = 31
Advertisements
