天天看點

螞蟻的難題(異或最大值問題)

描述

小螞蟻童鞋最近迷上了位運算,他感覺位運算非常神奇。不過他最近遇到了一個難題:

給定一個區間[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();

         }

    }

}

繼續閱讀