NC20860 兔子的區間密碼 二進位制

2021-10-08 17:19:47 字數 2899 閱讀 9390

題目鏈結

題意:

給 你一

個區間[

l,r]

給你乙個區間[l,r]

給你乙個區間

[l,r]找出

區間兩個

數異或最

大找出區間兩個數異或最大

找出區間兩個

數異或最

題解:

l ,r

<=1

e18

l,r<=1e18

l,r<=1

e18肯定不

能暴力枚

舉去

找肯定不能暴力列舉去找

肯定不能暴力

列舉去找

然 後可

以想到,

想讓這個

數最大,

就是盡量

讓二進位制

全1

然後可以想到,想讓這個數最大,就是盡量讓二進位製全1

然後可以想到

,想讓這

個數最大

,就是盡

量讓二進

製全1那麼就

找比

如100和11

這種異或

那麼就找比如100和11這種異或

那麼就找比如

100和

11這種

異或首 先肯

定找的是

存在的最

高位2的

冪和他的

減一

首先肯定找的是存在的最高位2的冪和他的減一

首先肯定找的

是存在的

最高位2

的冪和他

的減一但是可

能區間不

存在二次

冪,或者

不存在他

對應的減

一但是可能區間不存在二次冪,或者不存在他對應的減一

但是可能區間

不存在二

次冪,或

者不存在

他對應的

減一比 如[

1101

,1111]這

种情

況比如[1101,1111]這種情況

比如[110

1,11

11]這

種情況我們會

發現不管

怎麼異或

,前兩個

1一定不

存在

我們會發現不管怎麼異或,前兩個1一定不存在

我們會發現不

管怎麼異

或,前兩

個1一定

不存在從存在

那個1開

始我們可

以找到10

和1湊成

11就是最

大從存在那個1開始我們可以找到10和1湊成11就是最大

從存在那個1

開始我們

可以找到

10和1

湊成11

就是最大

所 以異

或l和r

,就能去

除掉前面

不論怎麼

異或都沒

有的

1所以異或l和r,就能去除掉前面不論怎麼異或都沒有的1

所以異或l和

r,就能

去除掉前

面不論怎

麼異或都

沒有的1

留 下的

最高位,

你就可以

把他湊成

這個位數

的全

1留下的最高位,你就可以把他湊成這個位數的全1

留下的最高位

,你就可

以把他湊

成這個位

數的全1

ac**

/*

author : zzugzx

lang : c++

blog : blog.csdn.net/qq_43756519

*/#include

using

namespace std;

#define fi first

#define se second

#define pb push_back

#define mp make_pair

#define all(x) (x).begin(), (x).end()

#define endl '\n'

#define sz(x) (int)x.size()

#define mem(a, b) memset(a, b, sizeof(a))

typedef

long

long ll;

typedef

unsigned

long

long ull;

typedef pair<

int,

int> pii;

typedef pair pll;

const

int mod =

1e9+7;

//const int mod = 998244353;

const

double eps =

1e-6

;const

double pi =

acos(-

1.0)

;const

int maxn =

1e6+10;

//const int n = 1e5 + 5;

const ll inf =

0x3f3f3f3f

;const

int dir[

2]=,

,,,,

,,};

intmain()

cout << ans << endl;

}return0;

}

二進位制 二進位制中1的個數

題目 請實現乙個函式,輸入乙個整數,輸出該數二進位制表示中 1 的個數。例如,把 9 表示成二進位制是 1001,有 2 位是 1。因此,如果輸入 9,則該函式輸出 2。示例 1 輸入 00000000000000000000000000001011 輸出 3 解釋 輸入的二進位制串 0000000...

NC200190 矩陣消除遊戲 二進位制列舉

題目鏈結 題意 n m 的矩陣,可以消除 一行或者 一列k次 n m的矩陣,可以消除一行或者一列k次 n m的矩陣 可以消 除一行或 者一列k次每次 消除可以 得到該行 列 的 分數和,並且這一 行 列 全部變0 每次消除可以得到該行 列 的分數和,並且這一行 列 全部變0 每次消除可以 得到該行 ...

二進位制 簡學 二進位制數制的應用

設現有正整數150,二進位制形式為10010110,現有如下題目,求其盡可能簡單的解法。題目一 判斷該正整數是否是2的乘方 解法 由上表可以看出2的乘方的二進位制形式只有乙個bit為1,因此判斷乙個正整數a是否為2的乘方,可以判斷a a 1 是否等於0,若結果為0,則是2的乘方,若不為0則不是2的乘...