题目传送门:https://www.luogu.org/problemnew/show/P1313
题意:
给定一个多项式(ax+by)^k,请求出多项式展开后x^n*y^m 项的系数。
思路:
二项式定理:
进一步推广可以得到:
然后我们可以发现,用快速幂+递推求杨辉三角(或lucas定理,不想打)就可以解决了。
代码:
#include<cstdio>
#define mod 10007
int a,b,k,n,m;
int c[1010][1010];
int dg(int x,int k)
{
if(!k) return 1;
int p=dg(x,k>>1)%mod;
return p*p%mod*(k&1?x:1)%mod;
}
int C()
{
c[1][0]=c[1][1]=1;
for(int i=2;i<=k;i++)
{
c[i][0]=c[i][i]=1;
for(int j=1;j<i;j++)
c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod;
}
return c[k][n];
}
int main()
{
scanf("%d %d %d %d %d",&a,&b,&k,&n,&m);
a%=mod,b%=mod;
printf("%d",(long long)dg(a,n)*dg(b,m)%mod*C()%mod);
}