逆元板子
Posted santiego
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了逆元板子相关的知识,希望对你有一定的参考价值。
逆元板子
杨辉三角
杨辉三角第\(i\)行第\(j\)列(\(i\)从0开始)即为\(C_i^j\)
for(int i=0;i<=n;++i)
C[i][0]=1;
for(int j=1;j<=i;++j)
C[i][j]=(C[i-1][j]+C[i-1][j-1])%MOD;
快速幂逆元
由费马小定理得\(a\times a^p-2\equiv 1(mod\;p)\)(其中\(a,p\)互质且\(p\)为质数),故除\(a\)等价于乘以\(a^p-2\),使用快速幂求出\(a^p-2\)即可
LL pow_mod(LL a, LL b, LL mo)
LL ret = 1;
while(b)
if(b & 1) ret = (ret * a) % mo;
a = (a * a) % mo;
b >>= 1;
return ret;
线性逆元
inv[1]=1;
for(int i=2;i<=n;++i)
inv[i]=-(p/i)*inv[p%i];
inv[i]=(inv[i]%p+p)%p;
拓展欧几里得
不同于以费马小定理为原理的快速幂,拓展欧几里得中\(p\)不需要一定为质数
void Exgcd(ll a, ll b, ll &x, ll &y)
if (!b) x = 1, y = 0;
else Exgcd(b, a % b, y, x), y -= a / b * x;
int main()
ll x, y;
Exgcd (a, p, x, y);
x = (x % p + p) % p;
printf ("%d\n", x); //x是a在mod p下的逆元
以上是关于逆元板子的主要内容,如果未能解决你的问题,请参考以下文章