Pagini recente » Diferente pentru problema/cbinteractiv intre reviziile 28 si 9 | Diferente pentru problema/cbinteractiv intre reviziile 28 si 8 | Diferente pentru problema/map intre reviziile 18 si 16 | Cod sursa (job #3316634) | Cod sursa (job #3324943)
#include <fstream>
using namespace std;
const int MOD=9999991;
ifstream f("dirichlet.in");
ofstream g("dirichlet.out");
long long inv[2000005],fact[2000005];
int N;
long long InversModular(long long a,long long b){
long long val=1;
while(b>0){
if(b&1) val=val*a%MOD;
a=a*a%MOD;
b>>=1;
}
return val;
}
int main()
{
f >> N;
//
fact[0]=1;
for(int i=1;i<=2*N;i++)
fact[i]=fact[i-1]*i%MOD;
//
inv[2*N]=InversModular(fact[2*N],MOD-2);
for(int i=2*N-1;i>=0;i--)
inv[i]=inv[i+1]*(i+1)%MOD;
//
g << fact[2*N]*inv[N]%MOD*inv[N]%MOD*InversModular(N+1,MOD-2)%MOD;
return 0;
}