Pagini recente » Cod sursa (job #915627) | Cod sursa (job #20556) | Cod sursa (job #12519) | Cod sursa (job #1011137) | Cod sursa (job #540865)
Cod sursa(job #540865)
#include<fstream.h>
#include<math.h>
#include<iostream.h>
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
const int c=9973;
int t;
unsigned char f[1000000000];
//double long n,m;
int exponentiere(long long a, long long p)
{
long i;
long long sol=1;
for(i=0;(1<<i)<=p;i++) // luam toti biti lui p la rand
{
if(((1<<i)&p)>0)// daca bitul i din p este 1 atunci adaugam n^(2^i) la solutie
sol=(sol*a);
a=(a*a)%100000;// inmultim a cu a ca sa obtinem n^(2^i+1);
}
return sol;
}
int main()
{
long i,j;
long long n,m;
long long d,fm;
fin>>t;
for(i=1;i<=t;i++)
{
fin>>n;
for(int j=1;j<=n;j++)
f[j]=0;
m=n;
d=2;
while(n>1)
{
fm=0;
while(n%d==0)
{
fm++;
n=n/d;
}
if(fm!=0)
f[d]=f[d]+fm;
d++;
}
long long nr=1,s=1;
for(j=2;j<=m;j++)
{
if(f[j]!=0)
{
nr=nr*(f[j]+1);
s=s*(exponentiere(j,f[j]+1)-1)/(j-1);
}
}
fout<<nr<<' '<<s<<'\n';
}
return 0;
}