记录编号 473216 评测结果 AAAAAAAAAA
题目名称 求组合数 最终得分 100
用户昵称 GravatarHzoi_Mafia 是否通过 通过
代码语言 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);
}