目录
题目
思路
多项式 可以用二项式定理拆开,即
.
则 对应的项为
,系数为
,其中m=k-n。
一个问题是如何求 ?
存在公式 ①
也有 ②
我第一个想法就是通过公式①直接计算阶乘然后相除得出结果。(忘了有什么问题了)
第二个是利用公式②进行递推。(见代码)
for(int i=0;i<=k;i++){
for(int j=0;j<=i;j++){ // 注意j<=i
if(j==0) c[i][j] = 1;
else c[i][j] = (c[i-1][j]+c[i-1][j-1])%mod;
}
}
直接算就好,只是需要注意取余和爆int。太大了可以用快速幂求解。
代码
import java.util.*;
class Main{
static int a,b,k,n,m;
static long[][] c = new long[1010][1010];
public static void main(String[] args){
Scanner in = new Scanner(System.in);
a = in.nextInt();
b = in.nextInt();
k = in.nextInt();
n = in.nextInt();
m = in.nextInt();
for(int i=0;i<=k;i++){
for(int j=0;j<=i;j++){ // 注意j<=i
if(j==0) c[i][j] = 1;
else c[i][j] = (c[i-1][j]+c[i-1][j-1])%10007;
}
}
long res = 1;
res *= c[k][n];
while(n-->0) res = (res*a)%10007;
while(m-->0) res = (res*b)%10007;
System.out.println(res);
}
}