Pagini recente » Cod sursa (job #2765397) | Cod sursa (job #727328) | Cod sursa (job #2252969) | Rating cont de incercari (MihaiGeorge_) | Cod sursa (job #531244)
Cod sursa(job #531244)
#include <fstream>
using namespace std;
const int M=1000000;
const int P=9973;
int v[M],m,t,pr=1,s=1;
long long x;
bool c[M]={false};
ifstream in("ssnd.in");
ofstream out("ssnd.out");
int pow(long long a,long long n)
{
if(n==0)
return 1;
if(n%2)
return a*pow(a*a,n/2);
return pow(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(int x)
{
s=1,pr=1;
ciur();
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*=(pow(v[i],p+1)-1)%P;
s/=(v[i]-1);
s%=P;
}
}
if(x!=1)
{
pr*=2;
s*=(pow(x,2)-1)/(x-1);
s%=M;
}
out<<pr<<" "<<s<<"\n";
}
void work()
{
in>>t;
for(int i=1;i<=t;++i)
{
in>>x;
desc(x);
}
}
int main()
{
work();
return 0;
}