Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
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