Pagini recente » Cod sursa (job #888611) | Cod sursa (job #2596191) | Cod sursa (job #3235425) | Cod sursa (job #355765) | Cod sursa (job #642475)
Cod sursa(job #642475)
#include<stdio.h>
#include<math.h>
#define MOD 9999991
bool p[2000041];
long n;
void read () {
scanf("%ld",&n);
}
void eratostene (bool e[],long lim) {
e[0]=1;
e[1]=1;
for (long i=2;i<=lim;i++)
for (long j=i*i;j<=lim;j=j+i)
e[j]=1;
}
long multiplicitate (long &i , long &x) {
long suma=0,numitor=i;
while (x/numitor) {
suma=suma+x/numitor;
numitor*=i;
}
return suma;
}
void rez() {
long e1,e2,e3,nr1,nr2,nr3,expo,asd;
long long k=1,c,t;
nr1=2*n;
eratostene(p,nr1);
nr2=n;
nr3=n+1;
for (long i=1;i<=nr1;i++) {
if (p[i]==0) {
e1=multiplicitate(i,nr1);
e2=multiplicitate(i,nr2);
e3=multiplicitate(i,nr3);
expo=e1-e2-e3;
t=(long long)i;
c=1;
for (;expo>0;expo>>=1) {
if (expo&1)
c=(long long)c*t%MOD;
t=(long long)t*t%MOD;
}
k=(long long)k*c%MOD;
}
}
printf("%lld\n",k);
}
int main() {
freopen("dirichlet.in","r",stdin);
freopen("dirichlet.out","w",stdout);
read();
rez();
return 0;
}