这段代码自己试没有错误,但是交到洛谷上就只得了50分
代码:
#include<iostream>
using namespace std;
#define ll long long
ll f[1000001]={1};
ll qpmod(ll a,ll b,ll p){
ll ans=1;
while(b){
if(b&1){
ans=ans*a%p;
}
b>>=1;
a=a*a%p;
}
return ans;
}
ll z(ll mod){
for(ll i=1;i<=mod;i++){
f[i]=f[i-1]*i%mod;
}
}
ll ni(ll x,ll p){
return qpmod(x,p-2,p);
}
ll C(ll m,ll n,ll p){
if(n==0) return 1;
if(n==1) return m;
if(m<n) return 0;
if(m>p||n>p) return C(m/p,n/p,p)*C(m%p,n%p,p)%p;
return f[m]*ni(f[n]*f[m-n]%p,p)%p;
}
int main(){
ll a,b,k,m,n;
cin>>a>>b>>k>>m>>n;
ll p=10007;
z(p);
cout<<qpmod(a%p,k%(p-1),p)*qpmod(b%p,k%(p-1),p)%p*C(k,n,p)%p;
}