Cod sursa(job #636913)

Utilizator LgregL Greg Lgreg Data 20 noiembrie 2011 01:42:51
Problema Dirichlet Scor 100
Compilator cpp Status done
Runda .com 2011 Marime 0.66 kb
#include<stdio.h>
#define MOD 9999991
long long z=MOD;
long long put(long long x,long long y)
{
long long w;
if(y==1)
return x;
else if(y%2==0)
{
w=put(x,y/2);

return (w*w)%z;
}
else
{
w=put(x,y-1)%z;
return (w*x)%z;
}
}
int N;
int main()
{
freopen("dirichlet.in","r",stdin);
freopen("dirichlet.out","w",stdout);
long long nr1=1;
long long nr2=1;
scanf("%d",&N);
for(int i=1;i<=N;++i)
    {
    nr1=nr1*i;
    nr1%=MOD;
    }
for(int i=1;i<=2*N;++i)
    {
    nr2=nr2*i;
    nr2%=MOD;
    }
    //printf("%lld %lld %lld\n",nr2,nr1,put(nr1,MOD-2));
    printf("%lld\n",1LL*(((nr2*put(nr1,MOD-2))%MOD)*put((nr1*(N+1))%MOD,MOD-2)%MOD));
}