const ll mod = 998244353;
const ll maxn = 1e5+5;
ll f[maxn],inv[maxn];
ll qpow(ll a,ll b)
{
ll ans=1;
while(b)
{
if(b&1)ans=ans*a%mod;
a=a*a%mod;
b>>=1;
}
return ans%mod;
}
void init()
{
f[0]=inv[0]=1;
for(ll i=1; i<maxn; i++)
{
f[i]=f[i-1]*i%mod;
inv[i]=qpow(f[i],mod-2);
}
}
ll C(ll n,ll m) //n>=m
{
return f[n]*inv[n-m]%mod*inv[m]%mod;
}
使用递推方式
const ll maxv = 2005;
ll C[maxv][maxv];
void init(){
for(ll i=0;i<maxv;i++) C[i][0]=1;
for(ll i=1;i<maxv;i++)
for(ll j=1;j<maxv;j++)
C[i][j] = C[i-1][j]+C[i-1][j-1];
}