밀러라빈
using ll = long long;inline ll multiply(ll a, ll b, ll mod) { return __int128(a) * b % mod; }ll power(ll a, ll n, ll mod) { //a ^ n % mod ll res = 1; while (n) { if (n & 1) res = multiply(res, a, mod); a = multiply(a, a, mod); n >>= 1; } return res;}bool isPrime(ll n) { if (n >= 1, ++r; auto check = [&](ll a) { ll remain = power(a, d, n); if (..
간단한 exgcd
1. exgcdtuple extendedGCD(ll a, ll b) { // ax + by = gcd(a, b) if (b == 0) return {1, 0, a}; auto [x2, y2, g] = extendedGCD(b, a % b); return {y2, x2 - (a / b) * y2, g};}베주항등식 $ax_1 + by_1 = g$ 는 항상 해 존재$let)~ a=bk+r$$(bk + r)x_1 + by_1 = g$$b(kx_1+y_1) + rx_1 = g$$let)~ x_2 = kx_1+y_1, y_2=x_1$$\therefore x_1=y_2, y_1 = x_2-ky_2$2. modular inversell modInverse(ll a, ll b) { // a^-1 mod..