什么时候NOIP也要出二项式定理了?
二项式定理+逆元。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define mod 10007
using namespace std;
long long a,b,k,n,m,table[];
void get_table()
{
table[]=;
for (long long i=;i<=k;i++)
table[i]=(table[i-]*i)%mod;
return;
}
long long f_pow(long long x,long long y)
{
long long base=x,ret=;
while (y)
{
if (y&) ret=(ret*base)%mod;
base=(base*base)%mod;
y>>=;
}
return ret%mod;
}
int main()
{
scanf("%lld%lld%lld%lld%lld",&a,&b,&k,&n,&m);
if (k==) {printf("1\n");return ;}
long long ans1,ans2,ans3;
get_table();
ans1=table[k]*f_pow(table[n],mod-)%mod;
ans1=ans1*f_pow(table[k-n],mod-)%mod;
ans2=f_pow(a,n)%mod;ans3=f_pow(b,m)%mod;
printf("%lld\n",((ans1*ans2)%mod*ans3)%mod);
return ;
}