Wednesday, 11 March 2015

MaxiMizing XOR

Problem Statement
Given two integers, L and R, find the maximal values of A xor B, where Aand 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≤103
Output Format
The maximal value as mentioned in the problem statement.
Sample Input
10
15
Sample Output
7
Explanation
The input tells us that L=10 and R=15. All the pairs which comply to above condition are the following: 
10⊕10=0 
10⊕11=1 
10⊕12=6 
10⊕13=7 
10⊕14=4 
10⊕15=5 
11⊕11=0 
11⊕12=7 
11⊕13=6 
11⊕14=5 
11⊕15=4 
12⊕12=0 
12⊕13=1 
12⊕14=2 
12⊕15=3 
13⊕13=0 
13⊕14=3 
13⊕15=2 
14⊕14=0 
14⊕15=1 
15⊕15=0 
Here two pairs (10, 13) and (11, 12) have maximum xor value 7, and this is the answer.
/*code written by Sudhakar Pandey */
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <assert.h>

int maxXor(int l, int r) {
    int i,j,max=0,p=0;
    for(i=l;i<=r;i++)
        {
         for(j=i;j<=r;j++)
             {
               p=i^j;
               if(p>max)
                 max=p;  
         }
    }

 return max;
}
int main() {
    int res;
    int l;
    scanf("%d", &l);
    
    int r;
    scanf("%d", &r);
    
    res = maxXor(l, r);
    printf("%d", res);
    
    return 0;
}