Untitled

Untitled

Untitled

Untitled

/// tổ hợp vs prime modulo:
long long fct[maxn],inv[maxn],ivf[maxn];
 
void bornfact()
{
    fct[0] = ivf[0] = 1;
    fct[1] = ivf[1] = inv[1] = 1;
    for (int i=2;i<maxn; i++)
    {
        fct[i] = fct[i - 1] * i % MOD;
        inv[i] = MOD - MOD / i * inv[MOD % i] % MOD;
        ivf[i] = ivf[i - 1] * inv[i] % MOD;
    }
}
 
long long A(const int &n,const int &k)
{
    return (n<k)?0:fct[n] % MOD * ivf[n - k] % MOD;
}
 
long long C(const int &n,const int &k)
{
    return (n<k)?0:fct[n] % MOD * ivf[k] % MOD * ivf[n - k] % MOD;
}
 
long long P(const int &n)
{
    return fct[n];
}