Pagini recente » Cod sursa (job #1169942) | Cod sursa (job #830719) | Cod sursa (job #2804145) | Cod sursa (job #2536228) | Cod sursa (job #950019)
Cod sursa(job #950019)
#include<fstream>
#define MAX 1000000
#define IN "ssnd.in"
#define OUT "ssnd.out"
#define MODULO 9973
using namespace std;
ifstream in(IN);
ofstream out(OUT);
int T,nrp;
bool prim[MAX];
int p[MAX];
long long N;
void ciur();
void rezolva();
long long putere(long long x, long long p);
int main()
{
ciur();
in>>T;
for(int i=0; i<T; i++)
rezolva();
in.close();
out.close();
return 0;
}
void ciur()
{
for(int i=2; i <= MAX; i++)
if(prim[i]==0)
{
for(int j=i+i; j <= MAX; j+=i)
prim[j]=1;
p[++nrp]=i;
}
}
void rezolva()
{
in>>N;
long long aux=N;
long long ndiv=1, sdiv=1;
long long a1, b2;
for(int i=1; i <= nrp && p[i]*p[i] <= aux; i++)
{
if(N%p[i])
continue;
int pp=0;
while(N%p[i]==0)
++pp,
N/=p[i];
ndiv*=(pp+1);
a1 = ( putere( p[i], pp+1 ) - 1 ) % MODULO;
b2 = ( a1 / (p[i] - 1) );
sdiv = sdiv * b2 % MODULO;
}
out<<ndiv<<' '<<sdiv<<'\n';
}
long long putere(long long x, long long p)
{
long long sol=1;
while(p)
{
if(p%2==1)
sol=x*sol;
x*=x;
p/=2;
}
return sol;
}