Pagini recente » Cod sursa (job #1972624) | Cod sursa (job #252874) | Cod sursa (job #828217) | Cod sursa (job #2100263) | Cod sursa (job #531566)
Cod sursa(job #531566)
#include <fstream>
using namespace std;
const int M=1000005;
const int P=9973;
long long v[M],m,t;
long long x,pr=1,s=1;
bool c[M]={false};
ifstream in("ssnd.in");
ofstream out("ssnd.out");
long long fpow(long long a,long long n)
{
if(n==0)
return 1;
if(n%2)
return a*fpow(a*a,n/2);
return fpow(a*a,n/2);
}
void ciur()
{
for(int i=2;i*i<M;++i)
if(!c[i])
for(int j=i*i;j<M;j+=i)
c[j]=true;
m=0;
for(int i=2;i<M;++i)
if(!c[i])
v[++m]=i;
}
void desc(long long x)
{
s=1,pr=1;
for(int i=1;v[i]*v[i]<=x;++i)
if(x%v[i]==0)
{
int p=0;
while(x%v[i]==0)
{
x/=v[i];
++p;
}
pr*=(p+1);
s*=(fpow(v[i],p+1)-1)/(v[i]-1);
s%=P;
}
if(x!=1)
{
pr*=2;
s*=(fpow(x,2)-1)/(x-1);
s%=P;
}
out<<pr<<" "<<s<<"\n";
}
void work()
{
in>>t;
ciur();
for(int i=1;i<=t;++i)
{
in>>x;
desc(x);
}
}
int main()
{
work();
return 0;
}