Cod sursa(job #2780394)

Utilizator teodorescunicolasteodorescu nicolas alexandru teodorescunicolas Data 6 octombrie 2021 22:17:11
Problema Dirichlet Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <stdio.h>
#define MOD 9999991

using namespace std;

long long put(long long a, long long b ) {
  long long p;

  p = 1LL;
  while ( b > 0 ) {
    if ( b % 2 == 1 ) {
        p *= a;
        p %= MOD;
    }
    a *= a;
    a %= MOD;
    b /= 2;
  }

  return p;
}

int main()
{
    FILE *fin, *fout;
    int n, i;
    long long nfact, rez;

    fin = fopen( "dirichlet.in", "r" );
    fout = fopen( "dirichlet.out", "w" );

    fscanf( fin, "%d", &n );
    nfact = 1;
    for ( i = 1; i <= n; i++ ) {
        nfact *= i;
        nfact %= MOD;
    }

    rez = 1;
    for ( i = n + 2; i <= 2 * n; i++ ) {
        rez *= i;
        rez %= MOD;
    }

    rez *= put( nfact, MOD - 2 );
    rez %= MOD;

    fprintf( fout, "%lld", rez );

    fclose( fin );
    fclose( fout );
    return 0;
}