Pagini recente » Cod sursa (job #2061283) | Cod sursa (job #3123099) | Cod sursa (job #1974980) | Profil deliaelena | Cod sursa (job #406035)
Cod sursa(job #406035)
#include <cstdio>
#define file_in "ssnd.in"
#define file_out "ssnd.out"
#define Mod 9973
int T,N,i,inv[10000],e,d,nrd,suma,p;
int prim(int X)
{
if (X==1)
return 0;
if (X==2)
return 1;
for (int i=2;i<X;++i)
if (X%i==0)
return 0;
return 1;
}
int my_pow(int a,int b)
{
int t;
if (!b)
return 1;
t=my_pow(a,b>>1);
t=(t*t)%Mod;
if (b&1)
t=(t*a)%Mod;
return t;
}
int main()
{
freopen(file_in,"r",stdin);
freopen(file_out,"w",stdout);
scanf("%d", &T);
for (i=1;i<Mod;++i)
inv[i]=my_pow(i,Mod-2);
while(T--)
{
scanf("%d", &N);
if (prim(N))
{
printf("2 %d\n", N+1);
}
else
{
suma=1;
nrd=1;
e=0;
while(N%2==0)
{
N/=2;
e++;
}
if (e>0)
{
nrd=(e+1);
p=1;
for (i=1;i<=e+1;++i)
p*=2;
p--;
p=(p*inv[1])%Mod;
suma=p;
}
d=3;
while(N!=1)
{
e=0;
while(N%d==0)
{
N/=d;
e++;
}
if (e>0)
{
nrd*=(e+1);
p=1;
for (i=1;i<=e+1;++i)
p*=d;
p--;
for (i=1;i<d;++i)
p=(p*inv[i])%Mod;
suma*=p;
}
d+=2;
}
printf("%d %d\n", nrd,suma);
}
}
fclose(stdin);
fclose(stdout);
return 0;
}