Cod sursa(job #2384058)

Utilizator MarutBrabete Marius Stelian Marut Data 20 martie 2019 10:21:28
Problema Dirichlet Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<cstdio>
using namespace std;
const int MOD=9999991;
long long f1=1,f2=1,f3=1;
long long fast_pow(int a, int b)
{
    long long aa=a,p;
    for(p=1;b;b=b>>1)
    {
        if(b&1) p=(p*aa)%MOD;
        aa=(aa*aa)%MOD;
    }
    return p;
}
void fact(int n)
{
    for(register int i=2;i<=2*n;i++)
    {
        f1=(f1*(i%MOD))%MOD;
        if(i==n) f2=f1;
            else if(i==n+1) f3=f1;
    }
}
int main()
{
    freopen("dirichlet.in","r",stdin);
    freopen("dirichlet.out","w",stdout);
    int n;
    long long rez;
    scanf("%d",&n); 
    fact(n);
    rez=((f1*fast_pow(f2,MOD-2))%MOD*fast_pow(f3,MOD-2))%MOD;
    printf("%lld",rez);
    return 0;
}