Cod sursa(job #638163)

Utilizator gramatovici_paulGramatovici Paul gramatovici_paul Data 20 noiembrie 2011 19:15:43
Problema Dirichlet Scor 100
Compilator cpp Status done
Runda .com 2011 Marime 0.76 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in("dirichlet.in");
ofstream out("dirichlet.out");

inline long long modn(long long x,long long n)
{
    long long a=x%n;
    if(a<0)
        return n+a;
    else
        return a;
}

void euclidext(long long a, long long b, long long &x, long long &y)
{
    if (b==0)
    {
        x=1;
        y=0;
        return;
    }
    long long x1,y1,q=a/b;
    euclidext(b,a%b,x1,y1);
    x=y1;
    y=x1-y1*q;
}




int main()
{
    long long x,y,n,i,f1,f2;
    in>>n;
    f2=f1=1;
    for(i=n+1;i<=2*n;++i)
        f1=(f1*i)%9999991;
    for(i=1;i<=n+1;++i)
        f2=(f2*i)%9999991;
    euclidext(f2,9999991,x,y);
    out<<(modn(x,9999991)*f1)%9999991;
    return 0;
}