Pagini recente » Cod sursa (job #869211) | Cod sursa (job #2585670) | Cod sursa (job #1956366) | Cod sursa (job #1658824) | Cod sursa (job #1017933)
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
ifstream f ("ssnd.in");
ofstream g ("ssnd.out");
long v[1000001];
void initializare()
{
long nrdiv,sdiv;
nrdiv=1;
sdiv=1;
}
void ciur()
{
bool pr[1000001];
long i,j ,nr=0;
long lim=1000000;
for (i=2;i<=lim;i++)
pr[i]=0;
for (i=2;i<=sqrt(lim);i++)
if (pr[i])
for(j=i;j<=lim/i;j++)
pr[i*j]=0;
for (i=2;i<=lim;i++)
if (pr[i])
v[nr++]=i;
}
long long putere (long x, long y)
{
long i;
long long p;
for (i=1;i<=y;i++)
p=p*x;
return p;
}
void desc (long long n)
{
long i=1,j,nrdiv,sdiv,s;
long d[1000000],p[1000000];
long nr=0,aux=n;
for (j=1;j<=1000000;j++)
d[j]=0;
nrdiv=1;sdiv=1;
while (aux!=1)
{
if (aux%v[i]==0)
{
p[nr++]=v[i];
while (aux%v[i]==0)
{aux=aux/v[i];d[nr]++;}}
i++;}
for (i=1;i<=nr;i++)
{nrdiv=nrdiv*(d[i]+1);
s=(putere (p[i],d[i]+1)-1)/(p[i]-1);
sdiv= sdiv*s;
}}
int main()
{
int t,i; long n;
long nrdiv,sdiv;
cin>>t;
for (i=1;i<=t;i++)
{
cin>>n;
initializare();
desc(n);
cout<<nrdiv<<" "<<sdiv%1993<<endl;
}
f.close();g.close();
return 0;
}