Problem Statement
Given two integers, L and R , find the maximal value of A xor B , where A and B satisfy the following condition:
L≤A≤B≤R
Input Format
The input contains two lines; L is present in the first line and R in the second line.
Constraints
1≤L≤R≤10
3
Output Format
The maximal value as mentioned in the problem statement.
#include <map>
#include <set>
#include <list>
#include <cmath>
#include <ctime>
#include <deque>
#include <queue>
#include <stack>
#include <bitset>
#include <cstdio>
#include <limits>
#include <vector>
#include <cstdlib>
#include <numeric>
#include <sstream>
#include <iostream>
#include <algorithm>
using namespace std;
/*
* Complete the function below.
*/
int maxXor(int l, int r) {
int max_count_cycle = 10;
int return_max = 0;
int l_index = 0;
int r_index = 0;
int index_tm = 0;
int max = 1024;
int tm_l = l;
int tm_r = r;
while (true){
max_count_cycle = 10;
while (((tm_r << 1) & max) == 0 && max_count_cycle-- >0){
tm_r <<= 1;
r_index += 1;
}
r_index = 10 - r_index;
max_count_cycle = 10;
while (((tm_l << 1) & max) == 0 && max_count_cycle-- >0){
tm_l <<= 1;
l_index += 1;
}
l_index = 10 - l_index;
if (r_index > l_index){
return_max = (1 << r_index) - 1;
break;
}
else{
tm_l = l & ((1 << (r_index - 1)) - 1);
tm_r = r & ((1 << (r_index - 1)) - 1);
l_index = 0;
r_index = 0;
}
}
return return_max;
}
int main() {
int res;
int _l;
cin >> _l;
int _r;
cin >> _r;
res = maxXor(_l, _r);
cout << res;
return 0;
}