每次做题收获的一些个人总结的知识点(如有不对 望指出)
一 数论:
1. 如果一个数没有奇因数,那么他一定是2的次幂
(cf #697 (Div. 3) A)
.
2. 与运算符(&)
(优先级低于== 一定要注意括号)
两个同时为1,结果为1,否则为0;
“与运算”的特殊用途:
(1)清零。
如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。
(2)取一个数中指定位
方法:找一个数,对应X要取的位,该数的对应位为1,其余位为零,此数与X进行“与运算”可以得到X中的指定位。
例:设X=10101110,
取X的低4位,用 X & 0000 1111 = 00001110 即可得到;
还可用来取X的2、4、6位。
(3)判断n是否有奇因数(1不算
if((n)&(n-1))cout<<"YES";
else cout<<"NO";
.
3. 最大公约数
2019CCPC
若x+y=sum;
gcd(x,y)=gcd(x,sum)=gcd(y,sum);
.
4. 前缀和求k的倍数
用一个数组存储下来取余后的数值的结果,当两个数值一样时,那么这个区间肯定可以构成K的整数倍
小宝的幸运数组
K倍区间
.
**5.**同余公式
a/b%mod==a%(b*mod)/b
二 博弈论:
转载:博弈论入门
三 字符串:
1.字典序排序
很有意思的一题 拼数
四 搜索:
continue
★★序列大团结★★
矩阵:
poj1050 二维最大和子矩阵