求 m^k%p,时间复杂度 O(logk)O(logk)。
ll qpow(ll x, ll n, ll mod)
{
if (n == 0)
return 1;
ll res = qpow((x * x) % mod, n / 2, mod) % mod;
if (n & 1)
res = (res * x) % mod;
return res % mod;
}
快速乘:
ll mul(ll a, ll b, ll mo)
{
ll r = 0;
while (b)
{
if (b & 1)
r = (r + a) % mo;
a = (a + a) % mo;
b >>= 1;
}
return r;
}