第一种
ll mod = 1e9+7;
ll MAXN = 1000005;
ll jiecheng[1000005];
void init(){
jiecheng[0]=1;
jiecheng[1]=1;
for (int i=2;i<MAXN;i++) jiecheng[i] = i * jiecheng[i-1] % mod;
}
ll quick(ll x,ll y){
ll ans=1;
while(y){
if(y&1) ans = ans * x % mod;
x=((x%mod)*(x%mod))%mod;
y/=2;
}
return ans;
}
ll C(ll a, ll b){
return (jiecheng[a] % mod)*(quick(jiecheng[b] * jiecheng[a-b] % mod,mod-2))%mod;
}
第二种
ll a[2005][2005];
const ll mod = 998244353;
void init() // Cnk -> n、k、取余是mod
{
ll sum = 1;
a[0][0] = 1;
for(int i = 1 ; i <= 2000 ; i++)
{
a[i][0] = 1;
for(int j = 1; j<=i; j++) //k从1开始计算,到n-1结束
{
a[i][j] = (a[i-1][j] + a[i-1][j-1]) % mod;
}
}
}