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);
}
}