质数
目前了解的筛法
埃氏筛,时间复杂度(nlogn),(log)是根据调和级数算出来的,Dirichlet 前缀和和这个也有点像。
线性筛,平时比较常用的筛法,貌似所有的积性函数都可以筛就看自己会不会筛了。
一些定理
唯一分解定理,(N=p_1^{c_1}p_2^{c_2}p_3^{c_3}p_k^{c_k}),经常用到。
费马小定理,(a^{p-1}equiv1 pmod p),(p)为质数。
欧拉定理,(a^{phi(p)}equiv 1 pmod p),(a,p)互质。
中国剩余定理(CRT),对于一组同余方程
其中各模数互质,设(M)为各模数乘积,有通解(x=sum a_i imes frac{M}{m_i} imes t),其中(t)为(frac{M}{m_i})的逆元
证明如下:
对于(frac{M}{m_i} imes t),当模数为(m_i)的时候,该式子为(1),否则为(0),所以(x)满足各个方程。
卢卡斯定理(Lucas),(C_n^mequiv C_{n/p}^{m/p} imes C_{n\%p}^{m\%p} pmod p)
一般和CRT一起使用,对于模数可以分解为最高次幂不超过(1)的质数积的时候,先求出每个模数下的答案然后CRT合并即可。
证明如下:
首先证明(C_p^iequiv 0 1<=i<=p-1)
因为(i)是小于(p)的,所以一定存在逆元,于是
所以(C_p^iequiv 0 1<=i<=p-1)
于是((x+1)^p=C_p^0x^p+C_p^1x^{p-1}+C_p^2x^{p-2}+C_p^p)
中间那一大段都是(0)
所以((x+1)^pequiv x^p+1)
不妨设(n=ap+b,m=cp+d)
((x+1)^n)中第(m+1)项为(C_n^mx^m)
((x+1)^n=(x+1)^{ap}(x+1)^bequiv(x^p+1)^{a}(x+1)^b)
从前边选出(cp),即(C_a^cx^{cp}),从后边选出(d),有(C_b^dx^d)
所以(C_a^cx^{cp}C_b^dx^d=C_a^cC_b^dx^m)
比较系数得,(C_n^mequiv C_{n/p}^{m/p} imes C_{n\%p}^{m\%p} pmod p)
注意如果后边(b<d)的话结果一定为(0),写出原始的式子就明白了。
扩展卢卡斯定理
感觉这个跟卢卡斯定理没什么关系,主要思想是把里边所有的(p)拿出来单独考虑,然后它就有逆元了,于是就能正常处理了。
拉格朗日插值
对于高次多项式
给出(n+1)个值求出它的表达式
暴力做就是高斯消元,(n^3),但是巨佬感觉太慢了,于是它就提出了一个快速的方法。
直接把要求的值往里边代就行了,至于为什么,因为它是被构造出来的,所以代入几个值都对于是证毕???
逆元
exgcd求逆元
要求(axequiv1pmod{b})
可以把它变化成为(ax-by=1),
因为只求(x),所以变换(y)的系数没关系
得到(ax+by=1)
因为当二者互质时一定有解
所以,(gcd(a,b)=gcd(b,a\%b)=1)
所以(bx'+a\%by'=1)
然后得到(ax+by==bx'+(a-lfloorfrac{a}{b}
floor b)y')
又因为求整数解,所以让对应的系数相等即可。
得到(x=(a-lfloorfrac{a}{b} floor b)y'),(y=x')
exgcd求方程的其他解
令特解为(x_0,y_0)
那么有(ax_0+by_0=ax+by)
(a(x_0-x)==b(y-y_0))
(frac{a}{gcd(a,b)}(x_0-x)=frac{b}{gcd(a,b)}(y-y_0))
这时由于系数是互质的,
(x_0-x=frac{b}{gcd(a,b)}),
所以(x=x_0-frac{b}{gcd(a,b)})。
线性求逆元
设(Mod=ki+r)
则有(ki+requiv 0pmod{Mod})
同时乘上(i^{-1}r^{-1})得到(kr^{-1}+i_{-1}equiv 0pmod{Mod})
所以(i^{-1}equiv-kr^{-1}pmod{Mod})
即(i^{-1}equiv-lfloorfrac{Mod}{i} floor(p\%i)^{-1})