介紹一種快速求 \(\dbinom\) 的方法。
其實就是根據定義來做的做法
我們知道 \(\dbinom \mod (1e9+7)=\frac \mod (1e9+7)\)。
為方便表達,我們設 \(x=n\times (n-1)\times\dots\times(n-m+1)\) (即右邊的分子),\(y=1\times 2\times\dots\times m\) (即右邊的分母)。
然後就有
\[\dbinom \mod (1e9+7)=\frac \mod (1e9+7)
\]由費馬小定理得
\[y \times y^ \mod (10^9 + 7) = 1
\]兩邊同時乘上 \(y^\) 得
\[y^ \mod (10^9+7)=y^
\]因為 \(y^\) 是 \(y\) 的逆元,所以就有
\[\frac \mod(10^9+7) = x \times y^ \mod (10^9+7)
\]**實現起來也不難。
inline ll qpow(ll a, ll b) //快速冪,用於求逆元
return res % mod;
}inline ll work(int n, int m) //求 c(n, m)
p.s. 部分參考自 atcoder beginner contest 156 d題題解 組合數 求組合數的幾種方法總結
求c n,m mod的方法總結 1.當n,m都很小的時候可以利用楊輝三角直接求。c n,m c n 1,m c n 1,m 1 2.利用乘法逆元。乘法逆元 a b mod a b mod 2 mod為素數。逆元可以利用擴充套件歐幾里德或尤拉函式求得 1 擴充套件歐幾里德 b x p y 1 有解,x...
求組合數C n,m 的三種方法
一.暴力法 複雜度o n 適用 小資料,n 60可用 f 0 0 1 for int i 1 i n i for int j 0 j i j if j f i j f i 1 j f i 1 j 1 else f i j f i 1 j 二.逆元法 複雜度o nlog n 適用 m小於p 思路 把除...
一種遞推組合數字首和的Trick
記錄一下一種推組合數字首和的方法 設 sum m c n i s n,m s 是可以遞推的 就是加上最末尾的一項 s n,m 可以看做是楊輝三角上的一行,而 s n 1,m 是他的下一行 考慮組合數的遞推公式,除了 c n m 這一項之外都會被計算兩次 另外如果有多組詢問的話可以用莫隊實現 incl...