一本通OJ-计算系数
计算系数
题意
求\((ax+by)^k\)中\(x^n y^m\)项的系数。
分析
二项式定理+组合数三角形+快速幂。推得\(Ans=a^n b^m C[k][min(n,m)]\)。
代码
#include<bits/stdc++.h>
using namespace std;
const int N=1e3+7;
#define int long long
int C[N][N];
const int mod=10007;
void init(){
for (int i = 0; i < N; i ++ )
for (int j = 0; j <= i; j ++ ){
if (!j) C[i][j] = 1;
else C[i][j] = (C[i - 1][j] + C[i - 1][j - 1]) % mod;
}
}
int qpow(int shu,int cifang,int mod){
int ans=1;
int k=cifang;
while(k){
if(k&1){
ans=ans*shu%mod;
shu=shu*shu%mod;
}
else{
shu=shu*shu%mod;
}
k>>=1;
}
return ans%mod;
}
int a,b,k,n,m;
signed main(){
init();
scanf("%lld%lld%lld%lld%lld",&a,&b,&k,&n,&m);
a%=mod,b%=mod;
int ans=1;
ans*=(qpow(a,n,mod)*qpow(b,m,mod))%mod;
if(n>m)n=m;
ans*=C[k][n]%mod;ans%=mod;
printf("%lld",ans);
}