位运算笔记

Posted Harris-H

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了位运算笔记相关的知识,希望对你有一定的参考价值。

位运算笔记

性质1: ( x + y ) = ( ( x & y ) < < 1 ) + ( x ⊕ y ) \\large (x+y)=((x\\& y)<<1)+(x\\oplus y) (x+y)=((x&y)<<1)+(xy)​​​

性质2: ( x + y ) (x+y) (x+y) ( x ⊕ y ) (x\\oplus y) (xy)​ 奇偶性相同

性质3: ( x + y ) ≥ ( x ⊕ y ) (x+y)\\ge (x\\oplus y) (x+y)(xy)

性质4: ( x + y ) = ( x ⊕ y ) (x+y)=(x\\oplus y) (x+y)=(xy) 等且仅当 ( x & y = 0 ) (x\\& y=0) (x&y=0)

异或运算相当于不进位加法。

所以性质3得证。

且从性质1我们知道 △ = [ ( x + y ) − ( x ⊕ y ) ] ( m o d 2 ) = 0 \\triangle=[(x+y)-(x\\oplus y)]\\pmod{2}=0 =[(x+y)(xy)](mod2)=0

所以性质2得证。

D. Plus and xor

给定两个数 A + B A+B A+B 的和 X X X ,异或和 Y Y Y ,求 ( A , B ) (A,B) (A,B) 是否存在以及 A A A的最小非负整数解。

利用性质2和3判有解,然后利用性质构造 A = X − Y 2 , B = X − A A=\\dfrac{X-Y}{2},B=X-A A=2XY,B=XA

注意此时 A ⊕ B A\\oplus B AB 不一定等于 Y Y Y

我们可以这样理解:

X − Y 2 + X − Y 2 + Y = X \\dfrac{X-Y}{2}+\\dfrac{X-Y}{2}+Y=X 2XY+2XY+Y=X

X − Y 2 ⊕ X − Y 2 ⊕ Y = X \\dfrac{X-Y}{2}\\oplus \\dfrac{X-Y}{2}\\oplus Y=X 2XY2XYY=X

B = X − Y 2 + Y , B = X − Y 2 ⊕ Y B=\\dfrac{X-Y}{2}+Y,B=\\dfrac{X-Y}{2}\\oplus Y B=2XY+Y,B=2XYY

则要求: X − Y 2 + Y = X − Y 2 ⊕ Y \\dfrac{X-Y}{2}+Y=\\dfrac{X-Y}{2}\\oplus Y 2XY+Y=2XYY

则根据性质4 X − Y 2 & Y = 0 \\dfrac{X-Y}{2}\\& Y=0 2XY&Y=0

只有满足该条件才能构造出解。

code

int main(){
	ull x,y;scanf("%llu%llu",&x,&y);
	ll z=(x-y)>>1;
	if( x<y || (x-y)&1 || z&y ) return puts("-1"),0;
	else printf("%llu %llu\\n",z,x-z);
	return 0;
}

性质5: ( x & y ) + ( x ∣ y ) = ( x + y ) (x\\& y)+(x|y) =(x+y) (x&y)+(xy)=(x+y)

F. Anton and School

构造出 A A A

性质5: ( x & y ) + ( x ∣ y ) = ( x + y ) (x\\& y)+(x|y) =(x+y) (x&y)+(xy)=(x+y)

可用数学归纳法证明。

因此:

d i = b i + c i = n a i + ∑ i = 1 n a i \\large d_i=b_i+c_i= na_i+\\sum\\limits_{i=1}^n a_i di=bi+ci=nai+i=1nai​​

t o t = ∑ i = 1 n a i = ∑ i = 1 n d i 2 n = n ∑ i = 1 n a i + n ∑ i = 1 n a i 2 n tot=\\large \\sum\\limits_{i=1}^n a_i=\\dfrac{\\sum\\limits_{i=1}^n d_i}{2n}=\\dfrac{n\\sum\\limits_{i=1}^n a_i+n\\sum\\limits_{i=1}^na_i}{2n} tot=i=1nai=2ni=1ndi=2nni=1nai+ni=1n以上是关于位运算笔记的主要内容,如果未能解决你的问题,请参考以下文章

位运算学习笔记

C位运算笔记(根据网上内容整理)1

Matlab位运算笔记

整理笔记--位运算

位运算笔记

韩顺平 java笔记 第20讲 二进制 位运算 移位运算