Pagini recente » Cod sursa (job #1286729) | Cod sursa (job #1473151) | Cod sursa (job #297983) | Cod sursa (job #3223833) | Cod sursa (job #1018318)
#include<stdio.h>
int n,i,j,p[1000013],x,np,nr,nd,sd,q,t,z;
long long y;
bool k[1000013];
inline long long pow(int a, int b)
{
if(b==0)return 1;
long long x=a,y=1;
while(b!=1)
if(b%2==0) x=(x*x),b/=2;
else y=(x*y),--b;
return(x*y);
}
void invmod(int a, int b, int &x, int &y)
{
int q,t;
if(b==0)
{
x=1;
y=0;
return;
}
invmod(b,a%b,q,t);
x=t;
y=q-t*(a/b);
}
int main()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%d",&n);
for(i=2;i<=1000000;++i)k[i]=1;
for(i=2;i*i<=1000000;++i)
if(k[i])
for(j=i;i*j<=1000000;++j)k[i*j]=0;
for(i=2;i<=1000000;++i)if(k[i])p[np++]=i;
for(int w=0;w<n;++w)
{
scanf("%d",&x);
/*while(x!=1)
{
nr=0;
while(x%p[i]==0){x/=p[i];++nr;}
nd*=(nr+1);
y=(long long)(pow(p[i],nr+1)-1)/(p[i]-1);
sd=((long long)sd*y)%9973;
++i;
}*/
for(i=0,nd=sd=1;i<np && x!=1;++i)
{
nr=0;
while(x%p[i]==0)x/=p[i],++nr;
if(nr==0)continue;
nd*=(nr+1);
y=(long long)(pow(p[i],nr+1)-1)/(p[i]-1);
sd=((long long)sd*y)%9973;
}
if(x!=1)
{
nd<<=1;
sd=(sd*(x+1))%9973;
}
printf("%d %d\n",nd,sd);
}
//for(i=1;i<np;++i)printf("%d\n", p[i]);
return 0;
}