计算系数

给定一个多项式(ax+by)k,请求出多项式展开后x^n * y^m项的系数。

输入格式
共一行,包含 5 个整数,分别为 a,b,k,n,m,每两个整数之间用一个空格隔开。

输出格式
输出共 1 行,包含一个整数,表示所求的系数,这个系数可能很大,输出对10007 取模后的结果。

数据范围

0≤n,m≤k≤1000,
n+m=k,
0≤a,b≤106

输入样例:
1 1 3 1 2
输出样例:
3

一道很简单的二项式定理,高中学过的应该都能做出来,

二项式定理:(ax+by)^k 求 x^n * y^m的系数直接用公式就可。(不知道的百度)

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int p=10007;
ll a,b,k,n,m;
ll qmi(ll a,ll b)//快速幂
{
	ll res=1;
	while(b)
	{
		if(b&1)	res=(res*a)%p;
		b>>=1;
		a=(a*a)%p;
	}
	return res;
}
ll inv(ll a)//求逆元,为求组合数准备
{
	return qmi(a,p-2);
}
ll cntC(ll n,ll r)//求组合数
{
	ll fz=1,fm=1;
	for(int i=n;i>=n-r+1;i--)	fz=fz*i%p;
	for(int i=2;i<=r;i++)	fm=fm*i%p;
	return fz*inv(fm)%p;
}
int main()
{
	cin>>a>>b>>k>>n>>m;
	cout<<(qmi(a,n)*qmi(b,m))%p*cntC(k,m)%p<<endl;//公式运用
	return 0;
}
全部评论

相关推荐

Java抽象带篮子:难蚌,点进图片上面就是我的大头😆
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务