显然xnym的系数由c *xn-1ym*ax与d *xnym-1*by决定。
数组推下去就完了。
#include<bits/stdc++.h>
using namespace std;
long long h,i,j,k,l,m,n;
long long ha[1010][1010];
int main(){
// freopen("factor.in","r",stdin);
// freopen("factor.out","w",stdout);
scanf("%lld%lld%lld%lld%lld",&i,&j,&k,&m,&n);
i%=10007;
j%=10007;
ha[1][1]=i;
ha[1][2]=j;
for(long long z=2;z<k;++z){
for(long long y=1;y<=z+1;++y){
if(y==1) ha[z][y]=ha[z-1][y]*i;
else if(y==z+1) ha[z][y]=ha[z-1][y-1]*j;
else ha[z][y]=ha[z-1][y-1]*j+ha[z-1][y]*i;
ha[z][y]%=10007;
}
}
for(long long y=1;y;++y) {
if(y==1) ha[k][y]=ha[k-1][y]*i;
else if(y==k+1) ha[k][y]=ha[k-1][y-1]*j;
ha[k][y]=ha[k-1][y]*i+ha[k-1][y-1]*j;
ha[k][y]%=10007;
if(k-y+1==m){
printf("%lld",ha[k][y]);
return 0;
}
}
}