Cod sursa(job #2397174)

Utilizator popashtefan10Popa Stefan popashtefan10 Data 4 aprilie 2019 11:20:05
Problema Dirichlet Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <iostream>
#include <cstdio>
#define M 9999991

using namespace std;

long long fast_pow(long long a, long long b) {
  long long r = 1, p = a;

  while(b > 1) {
    if(b & 1)
      r = r * a % M;
    a = a * a % M;
    b >>= 1;
  }
  return a * r;
}

int main() {
  FILE *fin = fopen("dirichlet.in", "r");
  FILE *fout = fopen("dirichlet.out", "w");
  long long n, i, f1 = 1, f2, f3;

  fscanf(fin, "%lld", &n);
  for(i = 1; i <= 2 * n; i++) {
    f1 = f1 * i % M;
    if(i == n)
      f2 = f1;
    if(i == n + 1)
      f3 = f1;
  }
  long long x = f1 % M;
  x = (x * (fast_pow(f2, M - 2) % M) % M);
  x = (x * (fast_pow(f3, M - 2) % M) % M);
  fprintf(fout, "%lld", x);

  return 0;
}