Pagini recente » Cod sursa (job #1162074) | Cod sursa (job #1137822) | Cod sursa (job #311135) | Cod sursa (job #875299) | Cod sursa (job #639639)
Cod sursa(job #639639)
#include<stdio.h>
using namespace std;
long long r,p,nr,i,j,n,a[2000001],b[1000001],c[1000001];
long long vp(long long baz,long long fac)
{
long long nr11,p1;
nr11=0;
p1=baz;
while(1)
{
nr11=nr11+fac/p1;
p1=p1*baz;
if(p1>fac) break;
}
return nr11;
}
long long ridic(long long a1,long long b1)
{
long long p2;
p2=1;
while(b1>0)
{
if(b1%2==0)
{
a1=(a1*a1)%r;
b1=b1/2;
}
else
{
p2=(p2*a1)%r;
b1--;
}
}
return p2;
}
int main()
{
freopen("dirichlet.in","r",stdin);
freopen("dirichlet.out","w",stdout);
scanf("%d",&n);
a[1]=1;
for(i=1;i<=2*n;i++)
if(a[i]==0)
{
for(j=i*i;j<=2*n;j=j+i)
a[j]=1;
}
r=9999991;
for(i=1;i<=2*n;i++)
if(a[i]==0)
{
nr++;
b[nr]=i;
c[nr]=vp(i,2*n)-vp(i,n)-vp(i,n+1);
}
p=1;
for(i=1;i<=nr;i++)
p=(p*ridic(b[i],c[i]))%r;
printf("%lld",p);
return 0;
}