Cod sursa(job #1680049)

Utilizator depevladVlad Dumitru-Popescu depevlad Data 8 aprilie 2016 14:49:25
Problema Dirichlet Scor 76
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <fstream>

using namespace std;

ifstream in("dirichlet.in");
ofstream out("dirichlet.out");

const int MOD = 9999991;

int fastExp(int base, int exp) {
   if(exp == 0) return 1;
   int halfPower = fastExp(base, exp >> 1);
   if(exp & 1) return 1LL * halfPower * halfPower * base % MOD;
   return 1LL * halfPower * halfPower % MOD;
}

int getComb(int n, int k) {
   int ans = 1;
   for(int i = 1; i <= k; i++) {
      ans = 1LL * ans * (n - i + 1) * fastExp(i, MOD - 2) % MOD;
   }
   return ans;
}

int main() {
   int n;

   in >> n;
   out << 1LL * getComb(2*n, n) * fastExp(n + 1, MOD - 2) % MOD << '\n';
   return 0;
}