Cod sursa(job #636999)

Utilizator Fetita_JucausaFetita Buclucasa Fetita_Jucausa Data 20 noiembrie 2011 09:21:11
Problema Dirichlet Scor 100
Compilator cpp Status done
Runda .com 2011 Marime 0.76 kb
#include <fstream>
using namespace std;

#define MOD 9999991

int N;

inline int euclid (int a,int b,int &x,int &y)
{
    int d,x0,y0;

    if (!b)
    {
        x=1; y=0;
        return a;
    }
    d=euclid (b,a%b,x0,y0);
    x=y0; y=x0-(a/b)*y0;

    return d;
}

int invers_modular (int A,int N)
{
    int inv,nr;

    euclid (A,N,inv,nr);
    if (inv<0)
        inv=N+inv%N;

    return inv;
}

int main ()
{
    ifstream fin ("dirichlet.in");
    ofstream fout ("dirichlet.out");
    int rez,inv;

    fin>>N;
    rez=inv=1;
    for (int i=2; i<=N; ++i)
    {
        rez=(1LL*rez*(N+i))%MOD;
        inv=(1LL*inv*i)%MOD;
    }
    inv=invers_modular (inv,MOD);
    rez=(1LL*rez*inv)%MOD;
    fout<<rez;

    return 0;
}