Pagini recente » Cod sursa (job #1158260) | Cod sursa (job #101466) | Cod sursa (job #1563959) | Cod sursa (job #3255530) | Cod sursa (job #2722435)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
const int NMAX=1005;
long long v[NMAX],n;
long long lgput(long long a,long long b)
{
long long total=1;
if(b==0)
return 1;
else
{
if(b%2==0)
{
total=lgput(a,b/2);
total=total*total;
return total;
}
else
{
total=lgput(a,b/2);
total=total*total;
return total*a;
}
}
}
long long nrd(long long n)
{
long long d=2,p=0,total=1,s=1,ex=1;
while(n>1)
{
p=0;
while(n%d==0)
{
n=n/d;
p++;
}
if(p>0)
{
total*=(p+1);
}
d++;
if(d*d>n)
d=n;
}
return total;
}
long long sdivi(long long n)
{
long long d=2,p=0,s=1,ex=1;
while(n>1)
{
p=0;
while(n%d==0)
{
n=n/d;
p++;
}
if(p>0)
{
s*=(lgput(d,p+1)-1)%9973;
ex*=(d-1)%9973;
}
d++;
if(d*d>n)
d=n;
}
return s/ex%9973;
}
int main()
{
long long n,a,b,x,i,m;
fin>>n;
for(i=1;i<=n;i++)
{
fin>>m;
fout<<nrd(m)<<" "<<sdivi(m)<<"\n";
}
return 0;
}