Cod sursa(job #2231873)

Utilizator mihai.alphamihai craciun mihai.alpha Data 16 august 2018 13:11:17
Problema Dirichlet Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <stdio.h>
#define MAX 9999991

int ridiche(long long a, long long b)  {
    long long copa = a;
    long long rez = 1;
    rez = 1;
    while(b > 0){
        if(b % 2==1)
           rez = (rez * copa) % MAX;
        b/=2;
        copa = (copa*copa) % MAX;
    }
    return rez;
}

int main()  {
    FILE *fin, *fout;
    fin = fopen("dirichlet.in", "r");
    fout = fopen("dirichlet.out", "w");
    long long a, b, fact = 1;
    long long n;
    fscanf(fin, "%lld", &n);
    long long i;
    for(i = 1;i <= n;i++)
        fact = (fact * i)%MAX;
    a = ridiche(fact, MAX - 2);

    fact = (fact * (n+1)) % MAX;
    b = ridiche(fact, MAX - 2);
    for(i = n + 2;i <= 2 * n;i++)
        fact = (fact *i)%MAX;
    fprintf(fout, "%lld", (((a*b)%MAX)*fact) % MAX);
    fclose(fin);
    fclose(fout);
    return 0;
}