Cod sursa(job #2020717)

Utilizator refugiatBoni Daniel Stefan refugiat Data 11 septembrie 2017 16:20:41
Problema Dirichlet Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <fstream>
#define MOD 9999991
#define ll long long
using namespace std;
ifstream si("dirichlet.in");
ofstream so("dirichlet.out");
ll put(ll a,ll b)
{
    if(b==0)
    {
        return 1;
    }
    ll p=1;
    while(b!=0)
    {
        if(b%2==1)
        {
            p=p*a;
            p%=MOD;
        }
        a=a*a;
        a%=MOD;
        b/=2;
    }
    return p;
}
ll fact(ll n)
{
    ll p=1;
    for(int i=1;i<=n;i++)
    {
        p*=i;
        p%=MOD;
    }
    return p;
}
ll mid(ll n)
{
    ll p=1;
    for(int i=n/2+1;i<=n;i++)
    {
        p*=i;
        p%=MOD;
    }
    return p;
}
int main()
{
    ll n,p;
    si>>n;
    p=1;
    p*=put(fact(n),9999989);
    p%=MOD;
    p*=mid(2*n);
    p%=MOD;
    p*=put(n+1,9999989);
    p%=MOD;
    so<<p;
    return 0;
}