Cod sursa(job #2781346)

Utilizator teochess2017Togan Teodor-Bogdan teochess2017 Data 9 octombrie 2021 11:12:18
Problema Dirichlet Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <stdio.h>
#include <stdlib.h>

#define MOD 9999991

int logput(long long p, int e){
  int aux;
  if(1 < e){
    if((e % 2) == 0){
      aux = logput((p * p) % MOD, e / 2);
      return aux;
    }else{
      aux = (logput((p * p) % MOD, e / 2) * p) % MOD;
      return aux;
    }
  }else{
    return p;
  }
}
int factorial(int n){
  int i;
  long long fact;
  fact = 1;
  for(i = 2; i <= n; i++){
    fact  = (fact * i) % MOD;
  }
  return fact;
}

int main()
{
    FILE *fin, *fout;
    int n;
    long long n2f, nf, ncu1f;
    fin = fopen("dirichlet.in", "r");
    fscanf(fin, "%d", &n);
    fclose(fin);
    n2f = factorial(2 * n);
    nf = factorial(n);
    ncu1f = factorial(n + 1);
    fout = fopen("dirichlet.out", "w");
    fprintf(fout, "%d", (n2f * logput((nf * ncu1f) % MOD, MOD - 2)) % MOD);
    fclose(fout);
    return 0;
}