Pagini recente » Cod sursa (job #501752) | Cod sursa (job #1789157) | Cod sursa (job #1266338) | Cod sursa (job #874514) | Cod sursa (job #1854371)
#include <cstdio>
using namespace std;
int ciur[1000006],len;
void gaureala(int lim)
{
for(int i=2;i<=lim;++i)
{
if(ciur[i]==0)
{
ciur[len++]=i;
for(int j=i+i;j<=lim;j+=i)ciur[j]=1;
}
}
}
int lgput(int x,int p)
{
int exp[100],i;
exp[0]=x;
x=1;
for(i=1;1<<i<=p;++i)
{
exp[i]=exp[i-1]*exp[i-1];
}
--i;
while(p)
{
if(p>=1<<i)
{
p-=1<<i;
x*=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;
}
}
int n=1,s=1;
for(int j=0;j<ndiv;++j)
{
n*=1+divp[j][1];
s=(s*(
(lgput(divp[j][0],1+divp[j][1])-1)/
(divp[j][0]-1))
)%9973;
}
fprintf(out,"%d %d\n",n,s);
}
return 0;
}