数字2的乘法逆元
快捷计算方式如下
inv2=mod-mod/2;
推导如下
摘自https://blog.csdn.net/acdreamers/article/details/8220787
奇质数是既是奇数又是质数的数
2是唯一的偶质数,简而言之,以下推导对p=2不适用,其它质数都适用。
对上式的补充说明:
k=M%i=M-M/i*i
t*i=M/i*i
t*i+k=M/i*i+M%i=M/i*i+M-M/i*i=M,请注意M%M=0
对上式的补充说明:
inv[i]=(-M/i)*inv[M%i]%M
进一步处理
注意:M*inv[M%i]%M=0
inv[i]=(-M/i)*inv[M%i]%M+M*inv[M%i]%M
inv[i]=(M-M/i)*inv[M%i]%M
typedef long long ll;
const int N = 1e5 + 5;
int inv[N];
void inverse(int n, int p) {
inv[1] = 1;
for (int i=2; i<=n; ++i) {
inv[i] = (ll) (p - p / i) * inv[p%i] % p;
}
}