求n以内的所有组合数
一种方法是根据组合数递推公式来算
先初始化,再 组合数的递推公式
,求出之后的
代码:
1 ll Ck = 1; 2 for ( int i=1; i<k; i++ ) { 3 Ck = (((n-i+1)*now)%mod*qpow(i,mod-2))%mod; ///注意及时取模和用逆元 4 }
还一种是根据组合数定义来算
, 预处理出n以内的阶乘及其逆元。
代码:
int C( int n, int m ) { if ( n<m ) return 0; int ans = ((a[n]*b[m])%mod*b[n-m])%mod; return ans; } a[0]=a[1]=1; for ( int i=2; i<=1003; i++ ) a[i]=(a[i-1]*i)%mod; for ( int i=0; i<=1003; i++ ) b[i]=qpow(a[i],mod-2);

浙公网安备 33010602011771号