螞蟻的難題(一)
時間限制: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;
}