時間限制:
1000 ms | 記憶體限制:
65535 kb
難度:2 描述
小螞蟻童鞋最近迷上了位運算,他感覺位運算非常神奇。不過他最近遇到了乙個難題:
給定乙個區間[a,b],在區間裡尋找兩個數x和y,使得x異或y最大。來,幫幫他吧!
輸入
有多組測試資料(以eof結尾)。
每組資料輸入兩個數a,b.(0<=a輸出
輸出a到b之間,異或最大的值。
樣例輸入
1 28 9
樣例輸出
31
**螞蟻系列
解題思路:
求乙個區間[a,b]中任意兩個數異或的最大值:
先做a^b得到乙個數,該數二進位制的第乙個1(位置為q)一定產生於a的1和b的0做異或(因為a>b),所以q以上的位置a,b都是1,無法調動。但q以下的位置的0無論產生於a的1,b的1或是a的0,b的0,都可以對應調小a或者調大b來使得最終異或的結果為1111111……i.e. 2^cnt-1。
錯誤思路:暴力求出任意兩個數的二進位制,再求出異或值,列舉找出最大的。。。。。超時........當時對異或完全沒有概念,沒思路啊,,,,
錯誤**:
#includeusing namespace std;
int a[100]= ,b[100]= ,ans,k1,k2,sum;
long long pp(long long aa,long long bb)
while(bb)
ans=k1>k2?k1:k2;
for(int i=0; imax)
max=pp(i,j);
}printf("%lld\n",max);
}return 0;
}
正解:
#include#include#include#includeusing namespace std;
int main()
sum=pow(2,ans)-1;
printf("%lld\n",sum);
}return 0;
}
ny 744 螞蟻的難題 一 位運算
時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 小螞蟻童鞋最近迷上了位運算,他感覺位運算非常神奇。不過他最近遇到了乙個難題 給定乙個區間 a,b 在區間裡尋找兩個數x和y,使得x異或y最大。來,幫幫他吧!輸入 有多組測試資料 以eof結尾 每組資料輸入兩個數a,b.0 a輸出...
NYOJ 螞蟻的難題 二 dp
時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 下雨了,下雨了,螞蟻搬家了。已知有n種食材需要搬走,這些食材從1到n依次排成了乙個圈。小螞蟻對每種食材都有乙個喜愛程度值vi,當然,如果vi小於0的時候,表示螞蟻討厭這種食材。因為馬上就要下雨了,所以螞蟻只能搬一次,但是能夠搬走...
nyoj 螞蟻的難題(二)745
描述 下雨了,下雨了,螞蟻搬家了。已知有n種食材需要搬走,這些食材從1到n依次排成了乙個圈。小螞蟻對每種食材都有乙個喜愛程度值vi,當然,如果vi小於0的時候,表示螞蟻討厭這種食材。因為馬上就要下雨了,所以螞蟻只能搬一次,但是能夠搬走連續一段的食材。時間緊急,你快幫幫小螞蟻吧,讓它搬走的食材喜愛值和...