快速幂
ll qpow(ll a, ll b) { ll t = 1; for(; b; b >>= 1, a = a * a % mod) if(b & 1) t = t * a % mod; return t; }
求逆元:
若a * a-1 ≡ 1 (mod p),我们就称 a-1 为 a 在模 p 意义下的逆元。
求解逆元的方法主要有如下三种,本篇只介绍使用扩展欧几里得的方法,其余方法各位可自行了解。
1、费马小定理,限制 p 必须为质数。
a/b % mod == a * bmod - 2 (模意义下)
2、欧拉定理。
3、扩展欧几里得
https://www.luogu.com.cn/problem/solution/P1495
乘法和加法可以随便取模
a * b == (a + k1 * mod)*(b + k2 * mod) (模意义下)