【题解】 P1313 计算系数

\(Description:\)

给出多项式\((by+ax)^k\),求出展开后\(x^n*y^m\)的系数(保证\(n+m=k\))

\(Sample\) \(Input\):

1 1 3 1 2

\(Sample\) \(Output\):

3

一眼二项式定理,但是不会。。。

学了一下好像会用一丢丢了。

具体公式:

\((x+y)^n=\sum_{k=0}^{n}C(n,k)*x^k*y^{n-k}=\sum_{k=0}^{n}C(n,k)*x^{n-k}*y^k\)

发现对于这题要求的系数其实就是:

\(C(n,k)*a^n*b^m\)

那就很完美的解决了,这其实也没必要发题解,我吃的空。。。。。。

#include<bits/stdc++.h>
#define int long long
using namespace std;
int a,b,n,k,m;
const int p=10007;
const int MAXK=1000;
int f[MAXK+5],inv[MAXK+5];
inline int power(int a,int b,int p){
    int ret=1;
    for(;b;a=(a*a)%p,b>>=1)if(b&1)ret=(ret*a)%p;
    return ret;
}
inline int C(int n,int m){
    if(n<m)return 1;
    if(n==m)return 1;
    return f[n]*((inv[m]*inv[n-m])%p)%p;
}
signed main(){
    scanf("%lld%lld%lld%lld%lld",&a,&b,&k,&n,&m);
    f[0]=1;
    for(int i=1;i<=k;++i)f[i]=(f[i-1]*i)%p;
    inv[0]=1;
    inv[k]=power(f[k],p-2,p);
    for(int i=k-1;i>=1;--i)inv[i]=(inv[i+1]*(i+1))%p;
    printf("%lld\n",C(k,n)*power(a,n,p)%p*power(b,m,p)%p);

    return 0;
}
posted @ 2019-04-02 20:49  章鱼那个哥  阅读(225)  评论(0编辑  收藏  举报