【總結】求組合數的方法
對於求 C(n,m)%mod 的方法
1. 在n,m都不大時,可以利用楊輝三角直接求。
void C()
{
for (int i=0;i<=500;i++)
c[i][0]=1;
for (int i=1;i<=500;i++){
for (int j=1;j<=i;j++)
c[i][j]=(c[i-1][j-1]+c[i-1][j]) % MOD;
}
}
2. 利用公式 C(n,m) = m! / (m-n)! / n!。
既然要%mod, 那麼兩個除數需要轉換成 * 其相應的逆元,可以用線性求逆元的方法在求 i! 的時候 求解 (i逆元)! 。
LL powz[N],inv[N],powinv[N];
void init(){
powz[0] = 0; powz[1] = 1;
inv[0] = 0; inv[1] = 1;
powinv[0] = 0; powinv[1] = 1;
for(int i = 2; i < N; i++){
powz[i] = (powz[i-1]*(LL)i)%mod;
inv[i] = inv[mod%i]*(mod-mod/i)%mod;
powinv[i] = powinv[i-1]*inv[i]%mod;
}
}
LL C(int x, int y){
if(x == 0 || x == y) return 1LL;
return powz[y]*powinv[y-x]%mod*powinv[x]%mod;
}
3. 。。。
相關文章
- 求自然數的組合數的回溯演算法演算法
- 請求方法總結
- 求陣列中k個數的所有組合陣列
- 【數學】組合數學 - 排列組合
- 求:1,2,5這三個數不同組合的和為100的組合的個數!Java實現。Java
- 組合數取模的幾種方法--Exlucas&楊輝三角&組合
- 位元組快取方法總結快取
- 【力扣】組合總和3(組合的去重)力扣
- 結合個人經歷總結的前端入門方法前端
- 【力扣】組合總數(另一種整數溢位)力扣
- 組合數學
- 字串分組相加方法四之總結字串
- [前端 · 面試 ]HTTP 總結(三)—— HTTP 請求方法前端面試HTTP
- 組合數學筆記-排列與組合筆記
- SQL Server對組合查詢結果排序方法SQLServer排序
- 分解和組合的抽象方法抽象
- Python純程式碼 取組合數結果Python
- javascript求餘數的方法JavaScript
- 組合數問題
- lg組合計數
- 組合數字首和
- Hive表小檔案合併方法總結Hive
- 【Python】演算法之求組合Python演算法
- 組會總結
- 前端組總結前端
- 回溯問題Python框架總結——排列組合問題Python框架
- js獲取字串位元組數方法小結JS字串
- java 位元組流檔案複製方法總結Java
- 【數學】組合數學 - 卡特蘭數
- Python引數組合Python
- 《小 學 組 合 數 學》
- 結構型-組合模式模式
- 【組合數學】組合數學簡介 ( 組合思想 2 : 數學歸納法 | 數學歸納法推廣 | 多重歸納思想 )
- BZOJ 3456: 城市規劃 [多項式求逆元 組合數學 | 生成函式 多項式求ln]函式
- HDU 2582 f(n) (組合數的gcd)GC
- 不學無數——組合模式模式
- 計算組合數 (sdut oj)
- 組合計數思維題