题目大意:
题目链接:https://www.luogu.org/problemnew/show/P1313
求
(
a
x
+
b
y
)
k
(ax+by)^k
(ax+by)k展开式中
a
n
b
m
a^nb^m
anbm项的系数。
思路:
众所周知,
(
x
+
y
)
k
(x+y)^k
(x+y)k展开式中
a
n
b
m
a^nb^m
anbm项的系数就是杨辉三角第
k
+
1
k+1
k+1行
m
+
1
m+1
m+1列的数字。假定为
f
[
n
+
1
]
[
m
+
1
]
f[n+1][m+1]
f[n+1][m+1]。
那么很明显,
(
a
x
+
b
y
)
k
(ax+by)^k
(ax+by)k展开式中
a
n
b
m
a^nb^m
anbm项的系数就是
f
[
n
+
1
]
[
m
+
1
]
×
a
n
b
m
f[n+1][m+1]\times a^nb^m
f[n+1][m+1]×anbm。
k
≤
1000
k\leq 1000
k≤1000,可以直接用杨辉三角和暴力求幂。
代码:
#include <cstdio>
#include <iostream>
using namespace std;
const int MOD=10007;
const int N=1010;
int n,m,k,an,s,a,b,C[N][N];
int mul(int x,int M) //暴力求幂
{
int y=x;
while (M--) x=(x*y)%MOD;
return x;
}
int main()
{
cin>>a>>b>>k>>n>>m;
a%=MOD;
b%=MOD;
C[1][1]=1;
for (int i=2;i<N;i++)
for (int j=1;j<=i;j++)
C[i][j]=(C[i-1][j]+C[i-1][j-1])%MOD; //杨辉三角
cout<<mul(a,n-1)*mul(b,m-1)%MOD*C[k+1][m+1]%MOD;
return 0;
}