Pagini recente » Cod sursa (job #177005) | Cod sursa (job #1682413) | Cod sursa (job #1341467) | Cod sursa (job #265320) | Cod sursa (job #976960)
Cod sursa(job #976960)
#include <iostream>
#include <fstream>
#include <bitset>
using namespace std;
int v[80000];
void declare()
{
bitset <1000002> b;
int i,i1,n;
b[0]=1;
b[1]=1;
for (i=2;i<=1000000;i++)
if (b[i]==0)
for (i1=i*2;i1<=1000000;i1=i1+i)
b[i1]=1;
n=0;
for (i=1;i<=1000000;i++)
if (b[i]==0)
{
n++;
v[n]=i;
}
}
struct struct1
{
int k, val;
} x[80000];
long long nr,sd,nd,ax;
int n,i,pos,nk;
int main(void)
{
declare();
FILE * f;
f=fopen("ssnd.in","r");
ofstream g("ssnd.out");
fscanf(f,"%d",&n);
for (i=1;i<=n;i++)
{
fscanf(f,"%I64d",&nr);
pos=1;
nd=1;
sd=1;
while (nr>=v[pos]*v[pos])
{
if (nr%v[pos]==0)
{
ax=v[pos];
nk++;
x[nk].val=v[pos];
while (nr%v[pos]==0)
{
ax=ax*v[pos];
x[nk].k++;
nr=nr/v[pos];
}
ax=ax-1;
ax=ax/(v[pos]-1);
nd=nd*(x[nk].k+1);
sd=(sd*ax)%9973;
}
pos++;
}
if (nr!=1)
{
nd=nd*2;
sd=(sd*((nr*nr-1)/(nr-1)))%9973;
}
g<<nd<<' '<<sd<<'\n';
}
g.close();
return 0;
}