時間限制:
1000 ms | 記憶體限制:
65535 kb
難度: 2
描述 小螞蟻童鞋最近迷上了位運算,他感覺位運算非常神奇。不過他最近遇到了乙個難題:
給定乙個區間[a,b],在區間裡尋找兩個數x和y,使得x異或y最大。來,幫幫他吧!
輸入
有多組測試資料(以eof結尾)。
每組資料輸入兩個數a,b.(0<=a輸出
輸出a到b之間,異或最大的值。
樣例輸入
1 28 9
樣例輸出
31
如4,8。計算得這個區間異或最大值為7^8=15=(1111)2=2^4-1;再任意找一組數2,6,計算得這個區間異或最大值為2^5=7=(111)2=2^3-1;
通過上述分析可得知最大值為2^n-1,而n正是右邊界的數的二進位制位數。
給出的a, b,如果a和b二進位制的前幾位是相同的,那麼在a到b的所有數中,這前幾位都不會改變,所以無論選什麼數異或,這前幾位都是零,而這前幾位後面的每個數字裡0和1都可能出現,並且一定能找到互補的兩個數使其異或後後面幾位都是1,這便是能得到的最大數。因此只需要找到a和b從高位往後數第乙個不相同的位,然後如果餘下n位,那麼答案就是2的n次方減1。找這個n可以用a異或b而後看得到的數有幾位來求得。
#include#include#includeusing namespace std;
#define ll long long
ll qp(ll n,ll k)//快速冪
return ret;
}int main()
printf("%lld\n",qp(2,we)-1);
}}
螞蟻的難題(二)
時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 下雨了,下雨了,螞蟻搬家了。已知有n種食材需要搬走,這些食材從1到n依次排成了乙個圈。小螞蟻對每種食材都有乙個喜愛程度值vi,當然,如果vi小於0的時候,表示螞蟻討厭這種食材。因為馬上就要下雨了,所以螞蟻只能搬一次,但是能夠搬走...
螞蟻的難題 三
螞蟻的難題 三 時間限制 2000 ms 記憶體限制 65535kb 難度 4 描述 螞蟻終於把盡可能多的食材都搬回家了,現在開始了大廚計畫。已知一共有n件食材,每件食材有乙個美味度ai和新鮮度bi,如果螞蟻在第t時刻將第i樣食材烹飪成功,則得到ai t bi的美味指數,當然,用第i件食材做飯要花去...
螞蟻的難題(三)
描述 螞蟻終於把盡可能多的食材都搬回家了,現在開始了大廚計畫。已知一共有n件食材,每件食材有乙個美味度ai和新鮮度bi,如果螞蟻在第t時刻將第i樣食材烹飪成功,則得到ai t bi的美味指數,當然,用第i件食材做飯要花去ci的時間。眾所周知,螞蟻的廚藝不怎麼樣,所以他需要你設計做飯方案使得在時間 t...