異或的常見問題

2021-10-07 04:46:20 字數 1597 閱讀 2863

一.給定陣列的異或和x

xx與求和y

yy,構造最短非負整數陣列。

思路:1.顯然當x

>

yx>y

x>

y無解,就拿兩個數來說,兩個數異或和不可能大於兩數和。

且兩者取等情況當且僅當,兩數取1的位不同。

在考慮奇偶性的情況,當x

xx為奇數時,顯然最低位的1要出現奇數次,

則說明有奇數個奇數,再加上偶數,和肯定為奇數。

當x

xx為偶數時,顯然最低位的1要出現偶數次,說明偶數個奇數,再加上偶數,和肯定為偶數。

說明當x,y

x,yx,

y奇偶性不同時無解。

所以x

>

yx>y

x>

y 無解。

2.x ==

yx==y

x==y

,若x ==

0x==0

x==0

為空陣列。

若x !=

0x!=0

x!=0

,直接輸出x

xx即可。

3.x

x<

y情況,顯然我們可以構造乙個長度為3

33的陣列。

令z =(

y−x)

2,

z=\dfrac,

z=2(y−

x)​,

有z ⊕z

⊕x=x

,z+z

+x=y

z\oplus z\oplus x=x,z+z+x=y

z⊕z⊕x=

x,z+

z+x=

y 這時我們還需考慮是否存在長度為2

22的陣列。

這樣的情況當且z,x

z,xz,

x的每位1不在同一位取得,即(x&

z)==

0(x\&z)==0

(x&z)=

=0.則答案為2,數

組為[z

⊕x,z

]2,陣列為[z\oplus x,z]

2,陣列為[

z⊕x,

z]cf628d

#include

using

namespace std;

typedef

long

long ll;

const

int n=

1e5+

5,inf=

0x3f3f3f3f

;#define mst(a) memset(a,0,sizeof a)

#define lx x<<1

#define rx x<<1|1

#define reg register

#define pii pair

#define fi first

#define se second

intmain()

}return0;

}

有時間再更…

…\dots\dots

……

異或和之和 異或問題

題目 有n個數,任選3個進行異或,求出所有三元組的異或和的和 普通計算是 o n 3 但是發現,對於異或的運算,就轉換為二進位制的運算,把每乙個陣列轉換為二進位制,再拆分,當且僅當 1 1 1 和 1 0 0 時,答案才為1,否則都是0,也就是說,只有這兩個情況是由貢獻的 把每個數位化為二進位制,然...

常見問題 朗動常見問題

常見問題一 方向盤變沉 檢查胎壓是否正常,輪胎是否過度磨損。助力幫浦不工作,前輪氣壓低。冬天的話,冷車在冬天助力油比較稠,方向會重一點。檢查轉向助力油。1 應該是是助力系統有問題或則助力潤滑油有問題。2 如果你在駕車時感覺方向盤變緊,汽車偏向一側,需要檢查輪胎,或進行車輪平衡 定位。在這些問題剛剛發...

問題 A 異或序列

時間限制 1 sec 記憶體限制 128 mb 提交 188 解決 86 提交 狀態 討論版 命題人 admin 題目描述 已知乙個長度為n的整數數列a1,a2,an,給定查詢引數l r,問在al,al 1,ar區間內,有多少子串行滿足異或和等於k。也就是說,對於所有的x,y l x y r 滿足a...