AcWing 211. 计算系数
原题链接
简单
作者:
llll
,
2019-03-07 19:41:22
,
所有人可见
,
阅读 1279
模为素数
逆元加快速幂算组合数
#include<iostream>
#include<bits/stdc++.h>
#define mod 10007
#define N 1001
using namespace std;
typedef long long ll;
ll f[1001],inv[1001];
ll qpow(ll a,ll b)//快速幂
{
ll ans=1;
a%=mod;
while(b)
{
if(b&1) ans=ans*a%mod;
a=a*a%mod;
b/=2;
}
return ans;
}
void init()//阶乘和逆元
{
f[1]=1;
for(int i=2;i<=1000;i++)
f[i]=f[i-1]*i%mod;
inv[999]=qpow(f[999],mod-2);//费马小定理
for(int i=998;i>=1;i--)
inv[i]=inv[i+1]*(i+1)%mod;
}
ll C(ll a,ll b)//组合数
{
if(a>b) return 0;
if(a==0) return 1;
return f[b]*inv[a]%mod*inv[b-a]%mod;
}
int main()
{
init();
long long a,b,k,n,m;
cin>>a>>b>>k>>n>>m;
ll ans1=qpow(a,n);
ll ans2=qpow(b,m);
cout<<ans1*ans2%mod*C(n,k)%mod<<endl;
return 0;
}