记录编号 457731 评测结果 AAAAAAAAAA
题目名称 求组合数 最终得分 100
用户昵称 GravatarJustWB 是否通过 通过
代码语言 C++ 运行时间 0.009 s
提交时间 2017-10-09 11:18:05 内存使用 0.31 MiB
显示代码纯文本
#include<cstdio>
#include<iostream>
const int mod=1000000007;
using namespace std;
long long exgcd(long long a,long long b,long long &x,long long &y);
long long n,m,x,y,tmp=1,test=1;
int main()
{
	freopen("combination.in","r",stdin);
	freopen("combination.out","w",stdout);
	cin>>n>>m;
	for(int i=0;i<m;i++)tmp=tmp*(n-i)%mod,test=test*(i+1)%mod;
	exgcd(test,mod,x,y);
	if(x<0)x+=mod;
	else x%=mod;
	printf("%lld",x*tmp%mod);
	return 0;
}
long long exgcd(long long a,long long b,long long &x,long long &y)
{
	if(!b)
	{
		x=1,y=0;
		return x;
	}
	long long r=exgcd(b,a%b,x,y);
	long long t=x;
	x=y;
	y=t-a/b*y;
	return r;
}