Posts

Showing posts from January, 2026

template

 **** Combinatorics **** const ll M = 1e9+7;  // default modulus // --- Basic modular operations --- ll mod(ll x, ll m = M){      return ((x % m) + m) % m;  } ll mod_add(ll a, ll b, ll m = M){      return (a + b) % m;  } ll mod_sub(ll a, ll b, ll m = M){      return ((a - b) % m + m) % m;  } ll mod_mul(ll a, ll b, ll m = M){     return ((a % m) * (b % m)) % m; // safe for small numbers } ll mod_pow(ll a, ll b, ll m = M) {     ll res = 1;     a %= m;     while(b) {         if(b & 1) res = (res * a) % m;         a = (a * a) % m;         b >>= 1;     }     return res; } // --- Modular inverse for prime modulus --- // Fermat's Little Theorem: a^(m-2) ≡ a^(-1) (mod m) ll mod_inv_prime(ll a, ll m = M){     return mod_pow(a, m - 2, m); } // --- Modular inverse for non-prime modulus --- /...