数学
模运算
加:(a + b) mod m = ((a mod m) + (b mod m)) mod m
减:(a - b) mod m = ((a mod m) - (b mod m)) mod m
乘:(a * b) mod m = ((a mod m) * (b mod m)) mod m
求 a * b % mod 的值
int mul(int a, int b, int mod)
{
a = a % mod;
b = b % mod;
int res = 0;
while (b > 0)
{
if (b & 1)
res = (res + a) % mod;
a = (a + a) % mod;
b >>= 1;
}
return res;
}
快速幂
求 a n a^n an%mod 的值
int fastPow(int a,int n,int mod)
{
int res = 1 % mod;
a %= mod;
while(n)
{
if(n&1)
res = res * a % mod;
a = a * a % mod;
n >>= 1;
}
return res;
}