一本通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);
}
posted @ 2023-07-25 13:59  Zimo_666  阅读(7)  评论(0编辑  收藏  举报