Pagini recente » Cod sursa (job #2524679) | Cod sursa (job #2116304) | Cod sursa (job #221500) | Cod sursa (job #56051) | Cod sursa (job #1398334)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
long int n,i;
const int MOD=9973;
long long int x;
struct punct
{
int p,x;
};
punct a[1001];
int pow(int x,int p)
{
long long int i,sol=1,a=x;
for(i=0;(1<<i)<=p;++i)
{
if(((1<<i)&p)>0) sol=(sol*a)%MOD;
a=(a*a)%MOD;
}
return sol;
};
int solve(int x)
{
int p,k=1,i;
long long int aux,d,s=1,c,y;
for(i=1;i<=x;i++)
{
a[i].p=0;
a[i].x=0;
}
aux=x;
d=2;
if(aux%2==0)
{
p=0;
while(aux%2==0)
{
p++;
aux/=2;
}
a[k].p=p;
a[k].x=2;
k++;
}
d++;
while(aux!=1)
{
if(aux%d==0)
{
p=0;
while(aux%d==0)
{
p++;
aux/=d;
}
a[k].p=p;
a[k].x=d;
k++;
}
d=d+2;
}
p=1;
for(i=1;i<=k;i++)
{
s=s*(a[i].p+1);
y=pow(a[i].x,a[i].p+1)-1;
p=p*(y/(a[i].x-1));
}
fout<<s<<" "<<p<<"\n";
};
int main()
{
fin>>n;
for(i=1;i<=n;i++)
{
fin>>x;
solve(x);
}
return 0;
}