Pagini recente » Cod sursa (job #510172) | Cod sursa (job #454885) | Cod sursa (job #2866807) | Cod sursa (job #1835759) | Cod sursa (job #2677271)
#include <fstream>
using namespace std;
#define M 9999991
ifstream f("dirichlet.in");
ofstream g("dirichlet.out");
unsigned long long n, x;
unsigned long long rise(unsigned long long a, unsigned long long b)
{
if (b == 0) return 1;
unsigned long long x = rise(a, b / 2);
if (b % 2 == 0) return (x * x) % M;
return (((x * x) % M) * a) % M;
}
unsigned long long catalan(unsigned long long n)
{
unsigned long long i, t = 1, s = 1;
for (i = 1; i <= n; ++i)
{
t = (t * i) % M;
}
for (i = n + 2; i <= 2 * n; i++)
{
s = (s * i) % M;
}
t = rise(t, M - 2);
return (s * t) % M;
}
int main()
{
f >> n;
x = catalan(n);
g << x;
return 0;
}