Cod sursa(job #1043279)

Utilizator Andrei1998Andrei Constantinescu Andrei1998 Data 28 noiembrie 2013 11:23:04
Problema Dirichlet Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
//Raspunsul este Al n-lea Numar Catalan (calculat modular)
#include <fstream>

using namespace std;

#define mod 9999991

int rid(int a,int b)
{
    if(b==0)
        return 1;
    else if(b==1)
        return (a%mod);
    else if(b&1)
    {
        int aux=rid(a,b-1);
        return ((1ll*aux*a)%mod);
    }
    else
    {
        int aux=rid(a,b/2);
        return ((1ll*aux*aux)%mod);
    }
}

int main()
{
    ifstream cin("dirichlet.in");
    ofstream cout("dirichlet.out");

    int n=0,i,nr1=1,nr2=1,dublu;
    cin>>n;

    dublu=n<<1;
    for(i=n+2;i<=dublu;i++)
        nr1=(1ll*nr1*i)%mod;
    for(i=1;i<=n;i++)
        nr2=(1ll*nr2*i)%mod;

    int inv=rid(nr2,mod-2);
    cout<<(1ll*inv*nr1)%mod<<'\n';

    cin.close();
    cout.close();
    return 0;
}