Pagini recente » Profil Tudose.Sanziana | Cod sursa (job #130278) | Cod sursa (job #2637417) | Cod sursa (job #2344121) | Cod sursa (job #1064217)
# include <fstream>
# include <algorithm>
# include <bitset>
# include <cmath>
# define N_Max 1000000
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
bitset <1000005> p;
int a[200000],ap[100000],var[100000];
int i,j,k,n,VV,d,ndiv,suma,x,nr;
long long inm;
long long putere ()
{
int q;
long long QQ=1,w=var[j];
q=ap[j]+1;
while (q!=0)
{
if (q%2==1)
{
QQ=QQ*w;
--q;
}
else
{
w=w*w;
q=q/2;
}
}
return QQ;
}
int main ()
{
a[1]=2;
k=1;
for (i=3; i<=N_Max; i=i+2)
{
if (p[i]==0)
{
a[++k]=i;
for (j=3; i*j<=N_Max; j=j+2)
p[i*j]=1;
}
}
f>>n;
for (i=1; i<=n; ++i)
{
f>>x;
if (x==1)
{
g<<"1 1\n";
continue;
}
VV=1; d=sqrt((double)x);
nr=0; ndiv=1; suma=1;
while (a[VV]<=d && x!=1)
{
if (x%a[VV]==0)
{
var[++nr]=a[VV]; ap[nr]=0;
while (x%a[VV]==0)
{
++ap[nr];
x=x/a[VV];
}
}
++VV;
}
if (x!=1)
{
g<<"2 "<<x+1<<"\n";
continue;
}
for (j=1; j<=nr; ++j)
{
ndiv=ndiv*(ap[j]+1);
inm=putere ();
suma=suma*((inm-1)/(var[j]-1));
}
g<<ndiv<<" "<<suma<<"\n";
}
return 0;
}