数论
费马小定理:
当(p in P)((P)是(prime)的集合)且(p mid{a})时,
(a^{m-1}equiv1pmod{m},a^{m}equiv{a}pmod{m},a^{m-2}equiv{a}^{-1}pmod{m})(即(a^{m-2})是(a)在模(m)意义下的逆元)
这是欧拉定理的特殊情况,在此不作证明了。
欧拉定理:
当(gcd(a,m)=1)时,(a^{varphi(m)}equiv1pmod{m})。变式:(a^cequiv{a^{cmodvarphi(m)}pmod{m}})
证明如下:
设(m)以内与其互质的数分别为(x_1,x_2,...,x_{varphi(m)}),令(p_i=ax_i)
引理1:(p_i)之间两两模(m)不同余,(x_i)之间两两模(m)不同余。
证明:反证法。若(exists{p_i},p_j(i e{j})),使得(p_iequiv{p_j}pmod{m}),即(a(x_i-x_j)equiv0pmod{m})。
又(gcd(a,m)=1),且(x_i-x_jin(0,m)),显然不成立。证毕。
引理2:每个(p)模(m)的结果都与(m)互质。
证明:依然反证法。设(p_i=k*m+r,gcd(r,m)>1)。
则(gcd(r,m)|{p_i}),即(gcd(m,p_i)>1)。显然不成立。证毕。
综上所述,设集合(A={x_i \% m}),(B={p_i \% m}),则(A=B)。(对于每个(p_i),能且只能找到一个(x_i),使得(p_iequiv{x_i}pmod{m}))。
全部乘起来,可以得到(a^{varphi(m)}prodlimits_{i=1}^nx_iequivprodlimits_{i=1}^nx_ipmod{m})。即(a^{varphi(m)}equiv1pmod{m})。证毕。
扩展欧拉定理:
(a^c=egin{cases}a^{cmodvarphi(m)}pmod{m}, qquad (gcd(a,m)=1)\a^c,qquadqquadqquadqquadqquadquad(gcd(a,m)>1,c<varphi(m))\a^{(cmodvarphi(m))+varphi(m)},qquadqquad(gcd(a,m)>1,cgevarphi(m))end{cases})
证明如下:
先证(forall{p}in{P}),(p^kequiv{p^{kmodvarphi(m)+varphi(m)}}pmod{m}(kgevarphi(m)))。
设(m=s*p^r(gcd(p,s)=1)),则(varphi(m)=varphi(s*p^r)=varphi(s)*varphi(p^r))(积性函数的性质)。所以(varphi(s)|varphi(m))。
又(p^{varphi(s)}equiv1pmod{s}),则(p^{varphi(m)}equiv1pmod{s}),则(p^{varphi(m)+r}equiv{p^r}pmod{m})。(这里用到一个同余的小性质。若(aequiv{b}pmod{c}),则(lambda*aequiv{lambda*b}pmod{lambda*c}))。
因为(varphi(m)=varphi(s)*varphi(p^r)=varphi(s)*(p-1)*p^{r-1}),所以(rlevarphi{(m)})。又(kgevarphi(m)),所以可以构造出(r)满足(p^k=p^{k-r+r}equiv{p^{k+varphi(m)}}pmod{m},kge{r})。
归纳可知,(p^kequiv{p^{k+tvarphi(m)}},tin{Z}),且指数要为正。故最小的合法指数为(kmodvarphi(m)+varphi(m))。于是可知(p^kequiv{p^{kmodvarphi(m)+varphi(m)}}pmod{m}(kgevarphi(m)))。
再对(a)进行分类讨论:
当(a=p^k)时,(a^cequiv{p}^{kc}equiv{p}^{kc+varphi(m)}equiv{p}^{kc+kvarphi(m)}equiv{(p^k)^{c+varphi(m)}}equiv{(p^k)^{cmod{m}+varphi(m)}}),成立。
当(a=prod{p_i^{k_i}})时,依据唯一分解定理做数学归纳,即可证正确性。证毕。
线性求逆元:
设模数为(p),(p=ax+b)。那么
两边同时乘上(x^{-1}b^{-1}),得
就可以线性求出了。
code:
inv[i] = (p - (p / i)) * inv[p % i] % p (inv[1] = 1)
组合数学:
第一类斯特林数:
第二类斯特林数:
设(egin{Bmatrix}n\kend{Bmatrix})表示(n)个有标号球,放到(k)个无标号的盒子里的方案数。那么
(因为球有编号,所以我们考虑最后一个球放在哪里。第(n)个球可以新开一个盒子,或者放在原来的(k)个盒子里)
排列计数:
对于一个相对顺序确定的长度为(x)的序列和一个相对顺序确定的长度为(y)的序列,它们合并的方案数为(dbinom{x+y}{y})。