数学
整除 以及 取模
一些整除的性质

辗转相除法:实际上就是
这个东西的时间复杂度是 O(\log(n)) 证明其实很简单:
每次进行辗转相处至少除以2,也就是结果至多缩小到原来的n/2.因此是(logn)
分解质因数:pollard rho算法——时间复杂度是O(n^-4)的分解质因数算法
可以贷款会,平时不用会,考前背个板子就好了
一个数字n的质因子大概有 n / \log(n) 个,这只是一个数量级,没有证明
一般求质数,我们就筛掉合数,得到如下↓ 去筛的数基本上是质数

我们可以使用一种全新的方法去理解取模

在取模意义下,有了同余的概念 同余符号就是mod m意义下的等号
一些性质↓

逆元:就是mod意义下的除法而已
这是一个扩欧——逆元的证明——
组合数取模: C(n,m)
- 若p是质数,使用Lucas定理。
- 若p不是质数,分解质因数CRT起来
- CRT:给出%a意义下是多少 %b意义下是多少……将这些东西还原回去

exgcd可以不用是质数。 预处理多个逆元一般用线性递推求逆元
费马小定理:


费马小定理——Miller-Rabin素性检验

欧拉函数


欧拉函数具有积性:
知道是积性函数后
所以说若f是积性函数 只需要知道 f(p^k) ,就可以知道1-k之间这个函数所有的取值
知道其之后 f(1) … f(n)可以全部算出来
求法:

(不会证明没有关系,记住欧拉定理就好了
裴蜀定理

↓
EXGCD:

a,b,x2,y2全部都知道 这样就可以表示出x1,y1
用递归就可以以一个式子将x1,y1表示出来
CRT中国剩余定理


扩展中国剩余定理:根本不去管他,耶!
筛子

二项式定理:
(好像发现了什么初一就推过的东西?)

(这个不是上次做过的结论题吗
答案就是n/k 入门题


做法一:分解质因数,桶里塞栈,预处理每个点的答案。走到询问的点分解质因数,找到栈里顶端的这个结点就可以了
做法二:虽然听不懂。但是我们可以将含有每个因数的点建个虚树,然后问题就是这样虚树有多大。
做法三:随便找两个点,暴力往上爬并染色,再找第三个点继续,这样就是O(n)的染色,或者也可以树剖+线段树变成O(logn)。

就是组合数罢了,等下我贴个公式
