天天看點

螞蟻的難題(一)

螞蟻的難題(一)

時間限制:1000 ms  |  記憶體限制:65535 KB

難度:2

描述

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

給定一個區間[a,b],在區間裡尋找兩個數x和y,使得x異或y最大。來,幫幫他吧!

輸入

有多組測試資料(以EOF結尾)。

每組資料輸入兩個數a,b.(0<=a<b<2^63)

輸出

輸出a到b之間,異或最大的值。

樣例輸入

1 2

8 9

樣例輸出

3

1

代碼:

#include<stdio.h>
int main(void)
{
	long long a,b,m,n;
	while(scanf("%lld%lld",&a,&b)!=EOF)
	{
		n=a^b;
		m=1;
		while(n)
		{
			m=m*2;
			n=n/2;
		}
		printf("%lld\n",m-1);
	}
	return 0;
}
           

繼續閱讀