求解逆元的思路
1:什么是逆元
如果两个数相乘对 m m m取模等于1,则称这两个数互为逆元。
2:费马小定理
如果 m m m是素数, a a a是任意数,则有 a m − 1 a^{m-1} am−1≡1( m m m);
接下来根据逆元的定义则有 a a a* a m − 2 a^{m-2} am−2≡1( m m m);
所以 a a a% m m m的逆元就是 a m − 2 a^{m-2} am−2% m m m;
a m − 2 a^{m-2} am−2用快速幂来求解
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int mod = 998244353;
int quick_pow(int a, int k) {
int res = 1;
while (k) {
if (k & 1)res = (ll)res * a % mod;
k >>= 1;
a = (ll)a * a % mod;
}
return res;
}
int inverse(int a){
return quick_pow(a, mod - 2) % mod;
}