Cod sursa(job #637661)

Utilizator veleanduAlex Velea veleandu Data 20 noiembrie 2011 15:50:35
Problema Dirichlet Scor 100
Compilator cpp Status done
Runda .com 2011 Marime 0.73 kb
#include<fstream>
#define MOD 9999991
using namespace std;
long long n1,s1,s2,n,i;
inline int modn(int x,int n)
{
    int a=x%n;
    if(a<0)
        return n+a;
    else
        return a;
}
void euclidext(int a, int b, int &x, int &y)
{
    if (b==0)
    {
        x=1;
        y=0;
        return;
    }
    int x1,y1,q=a/b;
    euclidext(b,a%b,x1,y1);
    x=y1;
    y=x1-y1*q;
}

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

int main()
{
    int a,n,x,y;
    in>>n;
    s1=s2=1;
    for ( i=n+1; i<=2*n; ++i)
    {
        s1*=i;
        s1%=MOD;
    }
   for ( i=1; i<=n+1; ++i)
    {
        s2*=i;
        s2%=MOD;
    }

    euclidext(s2,MOD,x,y);
    n1=modn(x,MOD);
    s1*=n1;
    s1%=MOD;
    out<<s1<<"\n";
    return 0;
}