很容易就可以看出,答案等于
\(C_{k}^{n-1}*a^n*b^m\)
(如果不懂的,可以自行研究一下\({(ax+by)}^3\),\({(ax+by)}^4\)的系数规律)
然后...快速幂跑一下,杨辉三角一打就行了
#include<bits/stdc++.h>
#define K 1005
#define mod 10007
using namespace std;
int a,b,k,n,m;
int c[K+5][K+5];
void yh_print()
{
for(int i=0;i<=K;i++)
{
c[i][0]=1,c[i][i]=1;
}
for(int i=2;i<=K;i++)
{
for(int j=1;j<=i;j++)
{
c[i][j]=(c[i-1][j-1]+c[i-1][j])%mod;
}
}
}
inline int ksm(int x,int y)
{
int base=x,ans=1;
while(y)
{
if(y&1) ans=(ans*base)%mod;
base=(base*base)%mod;
y>>=1;
}
return ans%mod;
}
int main()
{
cin>>a>>b>>k>>n>>m;
yh_print();
a%=mod,b%=mod;
int p=ksm(a,n);
int q=ksm(b,m);
int s=(p*q)%mod;
cout<<(s*c[k][m])%mod;
return 0;
}
本文详细解析了如何运用快速幂运算和杨辉三角来解决一类组合数学问题,具体展示了如何计算特定形式的组合数,并通过代码实现,提供了清晰的步骤和方法。
1638

被折叠的 条评论
为什么被折叠?



