文章目录
- 递推打表求逆元
- 费马小定理求逆元
- 欧拉函数求逆元
- 扩展欧几里得算法求逆元
- 循环找解求逆元
递推打表求逆元
void init()
{fac[0] &#61; invfac[0] &#61; pow2[0] &#61; fac[1] &#61; invfac[1] &#61; 1;pow2[1] &#61; 2;for (int i &#61; 2; i < N; i&#43;&#43;){fac[i] &#61; fac[i - 1] * i % mod;invfac[i] &#61; (mod - mod / i) * invfac[mod % i] % mod;pow2[i] &#61; pow2[i - 1] * 2 % mod;}for (int i &#61; 2; i < N; i&#43;&#43;)invfac[i] &#61; invfac[i] * invfac[i - 1] % mod;
}
费马小定理求逆元
x的逆元是qsm(x,mod-2);
欧拉函数求逆元
扩展欧几里得算法求逆元
int exgcd(int a, int b, int &x, int &y)
{ if (b &#61;&#61; 0){x &#61; 1, y &#61; 0;return a;}int d &#61; exgcd(b, a % b, x, y);int tmp &#61; x;x &#61; y, y &#61; tmp - (a / b) * y;return d;
}
循环找解求逆元