Cnk 组合数模版
第一种 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; } } }
模版专项 文章被收录于专栏
模版