組合數的逆元求法
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const ll mod=1e9+7;
const int maxn=1e5+7;
ll fac[maxn];
ll inv[maxn];
ll C(int m,int n)
{
if(m>n)
return -1;
return fac[n]*inv[m]%mod*inv[n-m]%mod;
}
ll quick_mod(ll a,ll m)
{
ll tmp=a%mod;
ll ans=1;
while(m)
{
if(m&1)
ans=ans*tmp%mod;
tmp=tmp*tmp%mod;
m>>=1;
}
return ans;
}
void init()
{
fac[0]=1;
for(int i=1; i<maxn; i++)
fac[i]=(fac[i-1]*i)%mod;
inv[maxn-1]=quick_mod(fac[maxn-1],mod-2);
for(int i=maxn-2; i>=0; i--)
inv[i]=(inv[i+1]*(i+1))%mod;
}
int main()
{
init();
ll n,m;
while(cin>>n>>m)
cout << C(m,n) << endl;
return 0;
}
常數時間求逆元,可以說是很快了
相關文章
- 乘法逆元及逆元求法
- 【數學】組合數學 - 排列組合
- 初等數論——素數,逆元,EXGCD有關GC
- 組合數學
- 組合數學筆記-排列與組合筆記
- 楊輝三角(組合數)+排列組合
- 組合數字首和
- lg組合計數
- 組合數問題
- LCA的離線快速求法
- 【數學】組合數學 - 卡特蘭數
- 20240820:組合計數(2)
- 《小 學 組 合 數 學》
- 【組合數學】組合數學簡介 ( 組合思想 2 : 數學歸納法 | 數學歸納法推廣 | 多重歸納思想 )
- 【POJ 2249】 Binomial Showdown 組合數學 排列組合計算
- 乘法逆元 模板
- 組合數取模的幾種方法--Exlucas&楊輝三角&組合
- 數論學習筆記 (5):同餘與逆元筆記
- 組合數學 XKerror 筆記Error筆記
- 組合計數思維題
- 2024.4.6 組合數學補題
- CF938E-組合數
- 組合數輸出題解
- 不學無數——組合模式模式
- 組合數學筆記-特殊計數數列筆記
- 15.7 冪級數在組合數學中的應用
- 字串大小的不同求法與區別字串
- 組合數學學習筆記筆記
- 組合數學水題 $19$ 道
- 【學習筆記】組合數學筆記
- lgB3717 計算組合數
- CSU 1563 Lexicography (搜尋+組合數)
- Redux實現組合計數器Redux
- HDU 2068 RPG的錯排 (錯排+組合數)
- 求陣列中k個數的所有組合陣列
- PAT-B 1056 組合數的和【規律】
- 模運算與逆元
- BZOJ 2425 [HAOI2010]計數:數位dp + 組合數