Pagini recente » Cod sursa (job #2964731) | Cod sursa (job #2043874) | Cod sursa (job #1557343) | Cod sursa (job #2290659) | Cod sursa (job #1854361)
#include <cstdio>
using namespace std;
int ciur[1000006],len;
void gaureala(int lim)
{
for(int i=2;i<=30;++i)
{
if(ciur[i]==0)
{
ciur[len++]=i;
for(int j=i+i;j<=lim;j+=i)ciur[j]=1;
}
}
}
long long lgput(long long x,int p)
{
int exp[100],i;
exp[0]=x;
x=1;
for(i=1;1<<i<=p;++i)
{
exp[i]=(long long)exp[i-1]*exp[i-1];
}
--i;
while(p)
{
if(p>=1<<i)
{
p-=1<<i;
x*=(long long)exp[i];
}
--i;
}
return x;
}
int main()
{
gaureala(1000000);
FILE *in =fopen("ssnd.in","r"),*out=fopen("ssnd.out","w");
int nr,x;
fscanf(in,"%d",&nr);
for(int i=0;i<nr;++i)
{
fscanf(in,"%d",&x);
int divp[78500][2],ndiv=0;
for(int j=0;x-1;++j)
{
if(x%ciur[j]==0)
{
divp[ndiv][0]=ciur[j];
divp[ndiv][1]=0;
while(x%ciur[j]==0)
{
++divp[ndiv][1];
x/=ciur[j];
}
++ndiv;
}
}
long long n=1,s=1;
for(int j=0;j<ndiv;++j)
{
n*=(long long)1+divp[j][1];
s=s*((long long)
(lgput(divp[j][0],1+divp[j][1])-1)/(long long)
(divp[j][0]-1));
}
printf("%lld %lld\n",n,s);
}
return 0;
}