Problem Statement
给定两个整数:L 和 R
∀ L ≤ A ≤ B ≤ R, 找出 A xor B 的最大值。
输入格式
第一行为 L
第二行为 R
数据范围
1 ≤ L ≤ R ≤ 103
输出格式
输出最大的异或和
样例输入
1
10
样例输出
15
样例解释
当B = 10, A = 5时,异或和最大。
1010 xor 0101 = 1111,所以答案是 15.
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
/*
* Complete the function below.
*/
static int getFirst(int num){
int i=0;
for(i=0;i<11;i++){
if((int)Math.pow(2,i)>num){
break;
}
}
return i;
}
static int maxXor(int l, int r) {
int t=getFirst(r);
int temp=(int)Math.pow(2,t);
if(getFirst(l)==getFirst(r))
return maxXor(l-temp/2,r-temp/2);
else
if((l<=temp-1-r)||(l^(temp-1))<=r)
return temp-1;
return 0;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int res;
int _l;
_l = Integer.parseInt(in.nextLine());
int _r;
_r = Integer.parseInt(in.nextLine());
res = maxXor(_l, _r);
System.out.println(res);
}
}