模运算与逆元

模运算与逆元:

取模定义:

\[a\bmod n\begin{cases} a-\lfloor\frac{a}{n}\rfloor\times n \ \ \ \ \ a\geq0\\ -(-a\bmod n)\ \ \ a<0 \end{cases} \]

 

取模基本性质:

\(a_0=a\bmod n,b_0=b\bmod n\)

  • \((a+b)\bmod n=((a\bmod n)+(b\bmod n))\bmod n\)

\(a+b\equiv a_0+b_0(\bmod n)\)

  • \((a\times b)\bmod n=((a\bmod n)\times (b\bmod n))\bmod n\)

    \(a\times b\equiv a_0\times b_0(\bmod n)\)

  • 对于任意正整数 \(k\) ,有 \(a\bmod n=(a\bmod kn)\bmod n\)

  • \(k \mid a\)​,有 \(\frac{a}{k}\ mod\ n=\frac{a\ \bmod \ kn}{k}\)

\(\frac{a}{k}=x\)

\[x-\lfloor\frac{x}{n}\rfloor\times n=\frac{xk-\lfloor\frac{xk}{kn}\rfloor\times kn}{k} \]

 

同余:

若整数 \(a,b\) 除以正整数 \(m\) 的余数相等,则称 \(a,b\)\(m\) 同余,记为 \(a\equiv b (\bmod m)\)

逆元:

\(a\) 为整数,\(n\) 为正整数,若整数 \(b\) 满足,\(ab\equiv 1(\bmod n)\),则称 \(b\)\(a\)\(n\)​ 的逆元。

  • 当且仅当 \(\gcd(a,n)=1\) 时, \(a\)\(n\) 的逆元存在。
  • 如果 \(b_1,b_2\)\(a\)\(n\) 的逆元,则必有 \(b_1\equiv b_2(\bmod n)\) ,即 \(a\)\(n\) 的逆元在模 \(n\) 意义下唯一。

由于 \(a\) 的逆元唯一,可记为 \(a^{-1}\)\(\frac{1}{n}\) 。可以定义 \(\frac{1}{a}\bmod n\)\(a\)\(n\) 的逆元中绝对值最小的数,并取与 \(a\)​ 相同的符号。

 

费马小定理:

对于质数 \(p\) 和任意整数 \(a\) ,若 \({\rm gcd}(a,p)=1\) ,则 \(a^p\equiv a (\bmod p)\)

设有数列 \(S=\{1,2,3,\cdots,p-1\},S\bmod p=S\)

\(S \times a = a,2a,3a,\cdots,(p-1)a\)

\(\therefore (S\times a\bmod p=(S\bmod p\times\ a\bmod p)\bmod p\)\(({\rm gcd}(a,p)=1)\)

\(\therefore\) 上式\(=S\times (a\bmod p)\)\({\rm gcd}(p,a\bmod p)=1\)

\(\therefore \prod_{i=1}^{p-1}i\equiv \prod_{i=1}^{p-1}a\times i\ (\bmod p)\)

\(\therefore (p-1)!\equiv a^{p-1}\times (p-1)!(\bmod p)\)

\(\therefore 1\equiv a^{p-1}(\bmod p)\)
\(\therefore a\equiv a^p(\bmod p)\)

 

求逆元:

\(p\) 为质数,且 \(\gcd(a,p)=1\) ,则 \(a^{-1}\equiv a^{p-2}(\bmod p)\) 。 计算时间复杂度 \(O(\log p)\)

\(a^{p-1}\equiv 1(\bmod p)\)

\(\therefore a\times a^{p-2}\equiv 1(\bmod p)\)

\(\therefore a^{-1}\equiv a^{p-2}(\bmod p)\)

 

线性求逆元:

代码
	inv[1] = 1;
	for(int i=2; i<=n; ++i) 
		inv[i] = ((-1LL*(p/i) % p ) * inv[p%i] % p + p ) % p;

$ \because p\bmod i=p-\lfloor\frac{p}{i}\rfloor\times i$

\(\therefore p=\lfloor\frac{p}{i}\rfloor\times i+(p\bmod i)\)

\(\therefore 0\equiv\lfloor\frac{p}{i}\rfloor\times i+(p\bmod i)(\bmod p)\)

\(\therefore -(p\bmod i)\equiv\frac{p}{i}\times i(\bmod p)\)

\(\therefore -\frac{\lfloor \frac{p}{i}\rfloor\times i}{p\ \bmod\ i}\equiv 1(\bmod p)\)

\(\therefore \frac{1}{i}\equiv-\frac{\lfloor \frac{p}{i}\rfloor}{p\ \bmod\ i}\)

 

求阶乘逆元:

代码
	inv[max1]=ksm(jie[max1],mod-2);//根据费马小定理求逆元
	for(int i=max1-1;i>=1;i--){//逆元递推
		inv[i]=cheng(inv[i+1],i+1);
	}

对于已知的 \((n+1)!\) 的逆元,只需将其乘上 \(n+1\) 即可得到 \(n!\) 的逆元。
\(\frac{1}{(n+1)!}\times (n+1)=\frac{1}{n!}\)

 

posted @ 2024-06-29 19:51  programmingysx  阅读(2)  评论(0编辑  收藏  举报