Pagini recente » Cod sursa (job #1139258) | Cod sursa (job #2442695) | Cod sursa (job #2764700) | Cod sursa (job #2447134) | Cod sursa (job #1149990)
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int t,rad,k,suma,n;
int PR[78500];
long long nr,x,y,aux;
bool X[1000005];
int main()
{
int i,j,z;
FILE *f=fopen("ssnd.in","r");
FILE *g=fopen("ssnd.out","w");
fscanf(f,"%d",&t);
PR[0]=1;
n=1000000;
for(i=2;i<=n;i++)
{
if(X[i]==false)
{
k++;
PR[k]=i;
for(j=2;j<=n/i;j++)
{
X[i*j]=true;
}
}
}
k=0;
for(i=1;i<=t;i++)
{
fscanf(f,"%I64d",&x);
y=x;
j=0;
rad=int(sqrt(y)+1);
nr=1;
suma=1;
while(y>1 && PR[j]<=rad)
{
j++;
k=0;
aux=y;
while(y%PR[j]==0)
y/=PR[j],k++;
if(k)
{
z=((aux/y*PR[j]-1)%9973);
if(z==0) z++;
if(suma==0)
suma=z;
else suma*=z;
z=(PR[j-1]%9973);
if(z==0) z++;
suma/=z;
suma%=9973;
nr*=(k+1);
}
}
if(y>1)
nr*=2,suma=suma*(y*y-1)/(y-1);
fprintf(g,"%I64d %d\n",nr,suma);
}
return 0;
}