Cod sursa(job #1465434)

Utilizator acomAndrei Comaneci acom Data 27 iulie 2015 13:06:05
Problema Dirichlet Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<fstream>
using namespace std;
#define MOD 9999991
ifstream fin("dirichlet.in");
ofstream fout("dirichlet.out");
long long n,rasp=1,m=1,x,y;
long long cmmdc(long long A, long long B, long long &X, long long &Y)
{
    if (B==0)
    {
        X=1, Y=0;
        return A;
    }
    long long X0,Y0;
    long long D=cmmdc(B,A%B,X0,Y0);
    X=Y0, Y=(X0-(A/B)*Y0)%MOD;
    if (Y<0) Y+=MOD;
    return D;
}
int main()
{
    fin>>n;
    for (long long i=2;i<=n;++i)
        m=(m*i)%MOD;
    rasp=m;
    for (long long i=n+1;i<=2*n;++i)
        rasp=(rasp*i)%MOD;
    m=(m*m)%MOD;
    cmmdc(m,MOD,x,y);
    rasp=(rasp*x)%MOD;
    cmmdc(n+1,MOD,x,y);
    rasp=(rasp*x)%MOD;
    fout<<rasp<<"\n";
    return 0;
}