Cod sursa(job #638406)
| Utilizator | Data | 20 noiembrie 2011 20:53:03 | |
|---|---|---|---|
| Problema | Dirichlet | Scor | 92 |
| Compilator | cpp | Status | done |
| Runda | .com 2011 | Marime | 0.75 kb |
#include <fstream>
using namespace std;
const int MOD = 9999991;
int N;
inline int power(int x, int y)
{
if (y == 0) return 1;
if (y % 2 == 0) return power(1LL * x * x % MOD, y >> 1);
return (1LL * x * power(1LL * x * x % MOD, y >> 1)) % MOD;
}
inline int inv(int x)
{
return power(x, MOD - 2);
}
inline int comb(int x, int y)
{
int numnow = 1, imp = 1;
for (int i = y + 1; i <= x; ++i)
numnow = (1LL * numnow * i) % MOD;
for (int i = 2; i <= x - y; ++i)
imp = (1LL * imp * i) % MOD;
return 1LL * numnow * inv(imp) % MOD;
}
int main()
{
ifstream fin("dirichlet.in");
ofstream fout("dirichlet.out");
fin >> N;
int result = comb(2 * N, N) - comb(2 * N, N + 1);
if (result < 0) result += MOD;
fout << result;
fin.close();
fout.close();
}
