Pagini recente » Cod sursa (job #1566862) | Cod sursa (job #1888650) | Cod sursa (job #339218) | Cod sursa (job #586714) | Cod sursa (job #862584)
Cod sursa(job #862584)
#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
FILE *f=fopen("ssnd.in","r");
FILE *g=fopen("ssnd.out","w");
int t,k,i,j,ok,pu;
long long v[1000000],s,d,p,y,x;
bool ciur(int n)
{
int i,j;
bool p[1000000];
for (i=2;i<=n;i++)
if (p[i]==0){
v[0]++;
v[v[0]]=i;
for (j=i+i;j<=n;j=j+i)
p[j]=1;
}
}
int ridic(int x, int put)
{
int sl=1,p=(x%9973);
for (;put;put>>=1,p=(p*p)%9973)
if (put&1)
{
sl=(sl*p)%9973;
}
return sl;
}
int main()
{
fscanf(f,"%d",&t);
ciur(1000005);
for (j=1;j<=t;j++){
d=1;
s=1;
fscanf(f,"%lld",&x);
i=1;ok=0;
y=(long long )sqrt(x);
while (v[i]<=y)
{
k=0;p=1;ok=1;
while (x % v[i]==0)
{x=x/v[i];
k++;
}
d=d*(k+1);
pu=ridic(v[i],k+1);
s=(s*((pu-1)/(v[i]-1)))%9973;
i++;
}
if (x!=1 && ok==1 ) {d=d*2; s=(s*((x*x-1)/(x-1)))%9973;}
if (d==1) fprintf(g,"2 %lld\n",x+1); else
fprintf(g,"%lld %lld\n",d,s);
}
return 0;
}