Pagini recente » Istoria paginii runda/miercuri_ora_10.00/clasament | Cod sursa (job #1183813) | Cod sursa (job #755470) | Cod sursa (job #1596240) | Cod sursa (job #522592)
Cod sursa(job #522592)
#include <stdio.h>
#include <math.h>
#define LL long long
#define M 9973
LL i,j,t,id,nrpr;
LL N,pr2[250000],S,Div;
bool pr[500010];
void ciur()
{
pr2[0]=2; nrpr=0;
for(i=1;i<=500000;i++)
{
if(!pr[i])
{
for(j=2*i*i+2*i;j<=500000;j+=2*i+1)
pr[j]=true;
pr2[++nrpr]=2*i+1;
}
}
}
void factori()
{
int L=(int)sqrt((double)N); LL c,p;
S=Div=1;
for(i=0;pr2[i]<=L && N>1;i++)
{
if(N%pr2[i]==0)
{
c=pr2[i]; p=0;
while(N%pr2[i]==0)
{
N/=pr2[i];
p++;
}
S*=(((LL)(pow(c,p+1)-1)/(c-1)) % M);
S%=M;
Div*=(p+1);
}
}
if(N>1)
{
Div*=2;
S*=((1LL*(N+1)) % M);
S%=M;
}
}
int main()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%d",&t);
ciur();
for(id=1;id<=t;id++)
{
scanf("%lld",&N);
factori();
//printf("%lld ",Div);
//printf("%lld\n",S);
printf("%lld %lld\n",Div,S);
}
}