结论

每次做题收获的一些个人总结的知识点(如有不对 望指出)

一 数论:

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倍区间

二 博弈论:

转载:博弈论入门

三 字符串:

1.字典序排序
很有意思的一题 拼数

四 搜索:

1.递归与全排列
链接
2.数的组合
链接

猜你喜欢

转载自blog.csdn.net/Minelois/article/details/113263081