Cod sursa(job #1564491)

Utilizator hrazvanHarsan Razvan hrazvan Data 9 ianuarie 2016 18:32:34
Problema Dirichlet Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <stdio.h>
#define MOD 9999991

inline int ptr(int a, int b){
  int rez = 1;
  while(b > 0){
    if(b & 1){
      rez = 1LL * rez * a % MOD;
    }
    b /= 2;
    a = 1LL * a * a % MOD;
  }
  return rez;
}

inline void fact(int n, int *a, int *b){
  int i, rez = 1;
  for(i = 2; i <= n; i++)
    rez = 1LL * rez * i % MOD;
  *a = rez;
  for(i = n + 1; i <= 2 * n; i++)
    rez = 1LL * rez * i % MOD;
  *b = rez;
}

int main(){
  FILE *in = fopen("dirichlet.in", "r");
  int n, i;
  fscanf(in, "%d", &n);
  fclose(in);
  FILE *out = fopen("dirichlet.out", "w");
  int a, b;
  fact(n, &a, &b);
  int x = ptr(a, MOD - 2);
  fprintf(out, "%d", 1LL * b * x % MOD * x % MOD * ptr(n + 1, MOD - 2) % MOD);
  fclose(out);
  return 0;
}