组合数模板

复杂度O(n)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const int N=2e6;
int Pow(int a,int b) {
int c=1;
while(b) {
if(b&1)c=(1ll*c*a)%mod;
a=1ll*a*a%mod;
b>>=1;
}
return c;
}
int C(int n,int m) {
if(n<m||m<0)return 0;
return fac[n]*infac[n-m]%mod*infac[m]%mod;
}
void init() {
fac[0]=1;
for(int i=1; i<N; i++)fac[i]=1ll*fac[i-1]*i%mod;
infac[N-1]=Pow(fac[N-1],mod-2);
for(int i=N-1; i>=1; i--)infac[i-1]=1ll*infac[i]*i%mod;
}

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!