计算系数

题目链接

k个式子相乘,把其中n个式子的x和m个式子的y选出来得到xn*ym

Ckn*Ck-nm(n+m=k也就是1)

直接计算在取模后做除法需要乘法逆元,可以用杨辉三角求解

#include<bits/stdc++.h>
using namespace std;
int f[1010][1010];
int main()
{
	int a,b,k,n,m,ans=1,sum=1,aa=1,bb=1;
	cin>>a>>b>>k>>n>>m;
	a%=10007,b%=10007;//a,b的取值范围是10^6^,直接平方会爆int
	memset(f,0,sizeof(f));
	f[1][1]=1;
	for(int i=2;i<=1006;i++)
	for(int j=1;j<=i;j++)
	f[i][j]=(f[i-1][j]+f[i-1][j-1]+10007)%10007;
	for(int i=1;i<=n;i++) aa=(a*aa+10007)%10007;
	for(int i=1;i<=m;i++) bb=(b*bb+10007)%10007;
	ans=(f[k+1][m+1]*aa+10007)%10007;//注意f数组的下标
	ans=(ans*bb+10007)%10007;
	cout<<ans;
	return 0;
}
原文地址:https://www.cnblogs.com/qwq-/p/13577670.html