用快速幂更高效。。。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <vector>
#include <queue>
#include <map>
#include <limits.h>
using namespace std;
typedef long long ll;
const ll mod=1000000009;
const ll maxn=100;
ll c[123456];
void init()
{
c[1]=1;
for(ll i=2;i<=maxn;i++)
{
c[i]=c[i-1]*i%mod;
//cout<<c[i]<<endl;
}
}
ll quickmod(ll a,ll b)//计算a^b并且对mod取余
{
ll ans=1;
while(b)
{
if(b&1)
{
ans=ans*a%mod;
}
b>>=1;
a=(a%mod)*(a%mod)%mod;
}
return ans;
}
ll C(ll n,ll m)//计算C(n,m)
{
return c[n]*quickmod(c[m]*c[n-m]%mod,mod-2)%mod;
}
int main()
{
ll a,b;
init();
while(~scanf("%I64d%I64d",&a,&b))
{
//cout<<"a^b="<<quickmod(a,b)<<endl;
cout<<"C(a,b)="<<C(a,b)<<endl;
}
return 0;
}