洛谷 P2431 正妹吃月餅

2022-05-12 15:29:35 字數 849 閱讀 3458

二進位制前置技能:

題目傳送門:

表示比起正妹更喜歡軟妹

我們把\(a\)和\(b\)全部轉換成二進位制,就會得到兩個長度為\(62\)的二進位制串。這兩個二進位制串的第\(i\)位可能為\(0\)或\(1\),分別表示\(a\)和\(b\)的二進位制表示下的第\(i\)位(從\(0\)開始)。

對於\(a,b\)相等,只有一種情況,我們就不考慮了。

然後,因為\(b>a\),所以必定有一位\(pos\),使得\(b\)二進位制下第\(pos\)位為\(1\),\(a\)二進位制下第\(pos\)位為\(0\)。即:

在\(a,b\)的二進位制表示下,第\(62\)位到第\(pos+1\)位是一模一樣的,後面的就不一樣了。對於一樣的,我們不予考慮。

我們設\(pos\)到\(1\)那一段的,\(b\)的為\(bob\),\(a\)的為\(boa\)。那麼\(bob\)肯定是\(1.......\),\(boa\)肯定是\(0........\)。

顯然,\(0111111...1111111\)肯定大於\(boa\)並且肯定小於\(bob\)。所以如果\(bob\)不是\(111111....111111\),那麼答案就是\(011111....1111111\)。

時間複雜度:\(o(logn)\)

空間複雜度:\(o(logn)\)

**如下:

#include #include using namespace std;

#define ll long long

ll a,b,pos,ans,res;

bool boa[63],bob[63];

ll read()

int main()

洛谷 P2431 正妹吃月餅 解題報告

今天是中秋節。uim 帶來了一堆大小不同且味道各異的月餅。這些月餅的質量分別是 1g 2g 4g 8g 16g 後面乙個是前面的2倍。每種只有乙個。uim讓正妹隨便吃。正妹希望嘗試盡可能多的口味,所以會吃盡可能多數量的月餅 不是重量 而且她的確有些餓了,至少總共要吃掉 a g 的月餅才能滿足。然而正...

luogu2431 正妹吃月餅

求乙個正整數集合 k 使得 sum 2 k in a,b 且 k 最大。a,b 大小在long long範圍內。sum 2 k 這不就是乙個二進位制數,對於該數上的每乙個數字 k 若 k in k 則該數字上的數為1,否則為0麼?所以原題就變成了 求乙個整數 x 使得 x in a,b 且其用二進位...

數論 luoguP2431 正妹吃月餅

題目 很少做這種二進位制的題 感覺很陌生 以後要多練練 感覺位運算好繞 把a二進位制拆分 然後從最低位開始找 如果當前位是0的話 就判斷一下把它變成1之後是不是比b小 小的話就變 有點貪心思想 如下 include include include using namespace std define...