记录编号 | 473216 | 评测结果 | AAAAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | 求组合数 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | C++ | 运行时间 | 1.298 s | ||
提交时间 | 2017-11-08 15:03:57 | 内存使用 | 3.36 MiB | ||
#include <iostream> #include <cstring> #include <cstdio> using namespace std; typedef long long L; L n,m; L fac[200005],inv[200005]; const L mod(1e9+7); inline L po(L x,L p){ L ret(1); while(p){ if(p&1)ret=ret*x%mod; x=x*x%mod;p>>=1; } return ret; } inline L get_c(L n,L m){ return fac[n]*inv[m]%mod*inv[n-m]%mod; } inline L lucas(L n,L m){ if(!m)return 1; return get_c(n%mod,m%mod)*lucas(n/mod,m/mod)%mod; } int main(){ freopen("combination.in","r",stdin);freopen("combination.out","w",stdout); fac[0]=1;for(int i=1;i<=2e5;++i)fac[i]=fac[i-1]*(L)i%mod,inv[i]=po(fac[i],mod-2); cin>>n>>m;cout<<lucas(n,m); }