快速* 模板
快速乘法取余
给定三个整数 \(a,n,mod\) ,求 \(a \times n ~\%~mod\) 的值。
inline int mult_mod(int a, int n, int mod)
{
int ans = 0;
while (n > 0)
{
if (n & 1)
ans = (ans + a) % mod;
a = (a + a) % mod;
n >>= 1;
}
return ans;
}
这个东西好像没有必要的样子,貌似只需要 \((a~\%~mod)×(n~\%~mod)~\%~mod\) 即可。
快速幂
给定三个整数 \(a,n,mod\) ,求 \(a^n~\%~mod\) 的值。
ll ksm(ll a, ll b, ll mod)
{
if (mod == 1)
return 0;
ll ans = 1;
ll tmp = a % mod;
while (b)
{
if (b & 1)
ans = ans * tmp % mod;
tmp = tmp * tmp % mod;
b >>= 1;
}
return ans;
}