P1313 计算系数 题解

Link

P1313 计算系数

Solve

根据二项式定理:

[(ax+by)^k=sum^k_{i=0}C^i_ka^ib^{k-i}x^iy^{k-i} ]

所以(x^ny^m)项的系数即为(C^n_ka^nb^m),用杨辉三角和乘法逆元就可以求出答案了。

Code

#include<cstdio>
using namespace std;
int zuhe[1005][1005]; 
int powf(int a,int b){
    int ans=1,base=a;
    while(b!=0){
        if((b&1)!=0)
    		ans=ans*base%10007;
        base=base*base%10007;
        b>>=1;
    }
    return ans;
}
void pre(){
    for(int i=0;i<=1000;i++){
        zuhe[i][0]=1;
        zuhe[i][i]=1;
    }
    for(int i=2;i<=1000;i++){
        for(int j=1;j<=1000;j++){
            zuhe[i][j]=(zuhe[i-1][j]+zuhe[i-1][j-1])%10007;
        }
    }
}
int main(){
    pre();
    int a,b,k,n,m;
    scanf("%d%d%d%d%d",&a,&b,&k,&n,&m);
    a=a%10007;
    b=b%10007;
    int ans=powf(a,n)%10007*powf(b,m)%10007*zuhe[k][n]%10007;
    printf("%d",ans);
    return 0;
}
原文地址:https://www.cnblogs.com/martian148/p/13858640.html