关于数论
质数
目前了解的筛法
埃氏筛,时间复杂度\(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\times \frac{M}{m_i}\times t\),其中\(t\)为\(\frac{M}{m_i}\)的逆元
证明如下:
对于\(\frac{M}{m_i}\times t\),当模数为\(m_i\)的时候,该式子为\(1\),否则为\(0\),所以\(x\)满足各个方程。
卢卡斯定理(Lucas),\(C_n^m\equiv C_{n/p}^{m/p}\times C_{n\%p}^{m\%p} \pmod p\)
一般和CRT一起使用,对于模数可以分解为最高次幂不超过\(1\)的质数积的时候,先求出每个模数下的答案然后CRT合并即可。
证明如下:
首先证明\(C_p^i\equiv 0 \ 1<=i<=p-1\)
因为\(i\)是小于\(p\)的,所以一定存在逆元,于是
所以\(C_p^i\equiv 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)^p\equiv 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)^b\equiv(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^m\equiv C_{n/p}^{m/p}\times C_{n\%p}^{m\%p} \pmod p\)
注意如果后边\(b<d\)的话结果一定为\(0\),写出原始的式子就明白了。
扩展卢卡斯定理
感觉这个跟卢卡斯定理没什么关系,主要思想是把里边所有的\(p\)拿出来单独考虑,然后它就有逆元了,于是就能正常处理了。
拉格朗日插值
对于高次多项式
给出\(n+1\)个值求出它的表达式
暴力做就是高斯消元,\(n^3\),但是巨佬感觉太慢了,于是它就提出了一个快速的方法。
直接把要求的值往里边代就行了,至于为什么,因为它是被构造出来的,所以代入几个值都对于是证毕???
逆元
exgcd求逆元
要求\(ax\equiv1\pmod{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-\lfloor\frac{a}{b}\rfloor b)y'\)
又因为求整数解,所以让对应的系数相等即可。
得到\(x=(a-\lfloor\frac{a}{b}\rfloor 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+r\equiv 0\pmod{Mod}\)
同时乘上\(i^{-1}r^{-1}\)得到\(kr^{-1}+i_{-1}\equiv 0\pmod{Mod}\)
所以\(i^{-1}\equiv-kr^{-1}\pmod{Mod}\)
即\(i^{-1}\equiv-\lfloor\frac{Mod}{i}\rfloor(p\%i)^{-1}\)