Pagini recente » Cod sursa (job #2361888) | Cod sursa (job #1792052) | Cod sursa (job #1507064) | Cod sursa (job #2579891) | Cod sursa (job #1424043)
// (2n)! / ((n + 1)! * n!)
#include <stdio.h>
#define MOD 0x989677
int x, y;
void gcd(int a, int b) {
if (!b) {
x = 1;
y = 0;
return;
}
gcd(b, a - a / b * b);
int aux = x;
x = y;
y = aux - y * (a / b);
}
int main(void) {
FILE *f;
int n;
int ans, div;
f = fopen("dirichlet.in", "r");
fscanf(f, "%d", &n);
fclose(f);
ans = 1;
for (int i = n + 2; i <= (n << 1); i++) {
const unsigned long long tmp = 1ULL * ans * i;
ans = tmp - tmp / MOD * MOD;
}
div = 1;
for (int i = 2; i <= n; i++) {
const unsigned long long tmp = 1ULL * div * i;
div = tmp - tmp / MOD * MOD;
}
gcd(div, MOD);
x = (x <= 0) * MOD + x - x / MOD * MOD;
const unsigned long long tmp = 1ULL * x * ans;
f = fopen("dirichlet.out", "w");
fprintf(f, "%d\n", tmp - tmp / MOD * MOD);
fclose(f);
return 0;
}