为什么要求逆元:
因为计算(a/b)%mod时 (a/b)%mod != (a%mod)/(b%mod) 所以需要把除法变成乘法
设c是b的逆元 则:b*c≡1(mod m)
则(a/b)%m = (a/b)*1%m = (a/b)*b*c%m = a*c(mod m) 即a/b的模等于a*b的逆元的模
求逆元的方法:
1.费马小定理
费马小定理:假如p是质数,且gcd(a,p)=1,那么 a^(p-1)≡1(mod p)
也就是a^(p-1) %p=1
所以假设 a*c = 1(mod p) 则 a*c = a^(p-1) (mod p)
那么 c = a^(p-2) (mod p)
c是a的逆元
ll poww(ll a,ll b=mod-2)
{
ll ans=1,base=a;
while(b!=0)
{
if(b&1!=0) ans=(ans*base)%mod;
base=(base*base)%mod;
b>>=1;
}
return ans;
}