ACM基础数学知识

1、异或

相同的数,异或结果为0,不同的数,异或结果为1.异或会用在nim博弈和一些数学中。可以找出n+1个数中,唯一一个与其他的数不同的数

异或有个性质:一个数对另一个数异或两次,数值不变。

性质应用:交换两个数

  1. x = x ^ y; //x = 3 ^ 4
  2. y = x ^ y; //y = 3 ^ 4 ^ 4 = 3
  3. x = x ^ y; //x = 3 ^ 4 ^ 3 = 4

2、移位运算符的使用:

就如果将一个数的前16位与一个数的后16位进行交换,最后输出结果,cout<<((x&0xffff0000)<<16|(x&0x0000ffff)>>16)<<endl;

3、~

if(~flag) 等价于 if(flag≠-1) 按位取反

4、图中统计长方形

if(mp[i][j] == '#' && mp[i-1][j] ≠ '#' && mp[i][j-1] ≠ '#') 只取一个角进行判断


5、&|运算

①.判断一个数字x二进制下第i位是不是等于1。

方法:if ( ( ( 1 << ( i - 1 ) ) & x ) > 0)

②.将一个数字x二进制下第i位更改成1。

方法:x = x | ( 1<<(i-1) )

③.把一个数字二进制下最靠右的第一个1去掉。

方法:x=x&(x-1)


6、有循环节的小数转换为分数:

0.123123123... = 123 / 999

没有循环节的部分(小数点后非循环节,可以和整数算在一起,最后整个结果,再除以放大倍数),转换成一部分,有循环节的,转换成一部分,然后加起来。

例题:SDUT 2021 Autumn Individual Contest - I - Virtual Judge (vjudge.net)


7、x & -x

当一个偶数与它的负值相与时,结果是能被这个偶数整除的最大的2的n次幂

当一个奇数与它的负值相与时结果一定是1.


8、inline函数:适用于代码体短小且调用次数多的函数

eg: inline int (int a, int b){

  return a > b ? a : b;

     }

9.a/b=a*b^(p-2)%p, 使用条件:b ≠ p, 当b = p时,整个式子的结果是0(因为b==p时,取模结果会是0)


10、平面图欧拉定理

定理:设G为任意的连通的平面图,则v-e+f=2,v是G的顶点数,e是G的边数,f是G的面数。


11、质因数分解定理

n的质因数分解是唯一的


12、皮克定理

皮克定理是指一个计算点阵顶点在格点上的多边形面积公式,该公式可以表示为S=a+b÷2-1,其中a表示多边形内部的点数,b表示多边形落在格点边界上的点数,S表示多边形的面积。

可以用相似三角形求在边界上有多少点(非常巧妙)

posted @ 2024-02-24 11:08  风归去  阅读(24)  评论(0编辑  收藏  举报