定义:、
在数学里,逆元素广义化了乘法中的倒数。
若,b*b1 % c == 1,则b1称为 b 模c 的乘法逆元。
那么对于除法来说,(a / b) % m 时,因b可能会过大,就有 ( a / b ) % c == ( a * b1 ) % c
求逆元方法:
1.费马小定理求逆元(费马小定理证明)【当p较大时应该使用此方法】
a^(p−1) ≡ 1 (mod p) = a*a^(p−2 )≡ 1 (mod p) ;
则a的逆元 为 a^(p−2)。
typedef long long ll;
const int mod = 9973;
ll quick_pow(ll y){ // 快速幂
int b = mod - 2;
ll ans = 1;
while(b){
if(b % 2 == 1){
ans = (ans * y) % mod;
}
y = (y * y )%mod;
b /= 2;
}
return ans % mod;
}
2.扩展欧几里得求逆元
const ll mod = 9973
ll exgcd(ll a,ll b,ll &x,ll &y){
if(b == 0){
x = 1;
y = 0;
return a;
}
ll ans = exgcd(b,a%b,x,y);
ll temp = x;
x = y;
y = temp - a / b * y;
return ans;
}
ll ans = exgcd(b, mod, x, y);
x = (x + mod) % mod; // x 为逆元