Mai intai trebuie sa te autentifici.
Cod sursa(job #2728733)
Utilizator | Data | 23 martie 2021 17:10:13 | |
---|---|---|---|
Problema | Dirichlet | Scor | 96 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.84 kb |
#include "bits/stdc++.h"
#include <cassert>
using namespace std;
using ll = long long;
using ull = unsigned long long;
using ld = long double;
using pi = pair<int, int>;
using pll = pair<ll, ll>;
using pd = pair<double, double>;
using pld = pair<ld, ld>;
const int MAX_N = 1e6, M = 1e7 - 9;
ll mod_inverse[MAX_N + 1];
int main()
{
ifstream cin("dirichlet.in");
ofstream cout("dirichlet.out");
int N;
cin >> N;
mod_inverse[1] = 1;
for (int i = 2; i <= N; ++i)
{
mod_inverse[i] = ((M - M / i) * mod_inverse[M % i]) % M;
/*if (i <= 5)
{
cerr << "MODINVERSE{" << i << "]: " << mod_inverse[i] << endl;
}*/
}
ll res{1};
for (int K = 2; K <= N; ++K)
{
res = (res * (((N + K) * mod_inverse[K]) % M)) % M;
}
cout << res;
}