天天看点

蚂蚁的难题(异或最大值问题)

描述

小蚂蚁童鞋最近迷上了位运算,他感觉位运算非常神奇。不过他最近遇到了一个难题:

给定一个区间[a,b],在区间里寻找两个数x和y,使得x异或y最大。来,帮帮他吧!

输入

有多组测试数据(以EOF结尾)。

每组数据输入两个数a,b.(0<=a<b<2^63)

输出
输出a到b之间,异或最大的值。
样例输入
1 2
8 9      
样例输出
3
1      

代码:

package com.test.yh;

import java.util.Scanner;

public class Main {

    public static void main(String[] args)

    {

        Scanner in =new Scanner(System.in);

        int a=in.nextInt(),b=in.nextInt();

         while(a>=0&&b>=0)

         {

             int yh=0;

             for(int i=a;i<b;i++)

             {

                 for(int j=i;j<=b;j++)

                 {

                    if(yh<(i^j))

                        yh=i^j;

                 }

             }

             System.out.println(yh);

             a=in.nextInt();

             b=in.nextInt();

         }

    }

}

继续阅读