螞蟻的難題 一

2021-07-27 16:18:36 字數 941 閱讀 4300

時間限制:

1000 ms  |  記憶體限制:

65535 kb

難度: 2

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

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

輸入

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

每組資料輸入兩個數a,b.(0<=a輸出

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

樣例輸入

1 2

8 9

樣例輸出

3

1

如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...