【题解】洛谷P1313 [NOIP2011TG]计算系数(组合+二次项展开)

洛谷P1313:https://www.luogu.org/problemnew/show/P1313

思路

本题就是考查二次项展开 根据定理有:(ax+by)k=∑ki=0Cik*aibk-ixiyk-i

即推出xnym的系数是Cmk*anbm

代码

#include<iostream>
using namespace std;
#define mod 10007
int a,b,k,n,m,ans,A=1,B=1;
int c[1002][1002];
int main()
{
    cin>>a>>b>>k>>n>>m;
    for(int i=1;i<=k;i++)//杨辉三角推二次项系数 
    {
        c[i][0]=c[i][i]=1;
        for(int j=1;j<=i-1;j++)
            c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod;
    }
    ans=c[k][m];//第k行第m个 可以改成第k行第n个 
    a%=mod;
    b%=mod;//先取% 不然只有60分 
    for(int i=1;i<=n;i++)
    A=A*a%mod;//计算a^n 
    for(int i=1;i<=m;i++)
    B=B*b%mod;//计算b^m 
    cout<<ans*A%mod*B%mod;
}
View Code
原文地址:https://www.cnblogs.com/BrokenString/p/9665237.html