直接用二项式定理
C
k
n
⋅
a
n
⋅
x
n
⋅
b
m
⋅
y
m
C_k^n \cdot a^n \cdot x^n \cdot b^m \cdot y^m
Ckn⋅an⋅xn⋅bm⋅ym
则求
C
k
n
⋅
a
n
⋅
b
m
C_k^n \cdot a^n \cdot b^m
Ckn⋅an⋅bm
因为 k < 10007 所以都会有逆元,
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#include<iomanip>
#include<cstdio>
#define int long long
#define sc scanf
#define pf printf
using namespace std;
typedef pair<int,int> pii;
typedef long long ll;
typedef unsigned long long LL;
const int INF = 0x3f3f3f3f;
const double eps = 1e-8;
const int mod = 10007;
const int N = 10010;
int fact[N],infact[N];
int n,m,k,a,b;
int qmi(int a,int b){
int res = 1;
while(b){
if(b&1) res = res*a%mod;
a = a*a%mod;
b >>= 1;
}
return res;
}
void init(){
fact[0] = infact[0] = 1;
for(int i=1;i<=k;i++){
fact[i] = fact[i-1]*i%mod;
infact[i] = infact[i-1]*qmi(i,mod-2)%mod;
}
}
signed main(){
// IOS;
#ifdef ddgo
freopen("C:/Users/asus/Desktop/ddgoin.txt","r",stdin);
#endif
cin>>a>>b>>k>>n>>m;
init();
int res = fact[k]*infact[n]%mod*infact[k-n]%mod*qmi(a,n)%mod*qmi(b,m)%mod;
cout<<res<<endl;
return 0;
}