Pagini recente » Cod sursa (job #1968657) | Cod sursa (job #1701951) | Cod sursa (job #340369) | Cod sursa (job #295185) | Cod sursa (job #1014229)
#include<stdio.h>
#include<math.h>
int n,i,j,p[10013],np,y,nr;
long long x,nrd,sd;
bool k[1000013];
inline int 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)%9973,b/=2;
else y=(x*y)%9973,--b;
return(x*y)%9973;
}
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,np=0;i<1000000;++i)if(k[i]){for(j=i;i*j<1000000;++j) k[i*j]=0;p[np++]=i;}
for(int q=0;q<n;++q)
{
scanf("%lld",&x);
nrd=sd=1;
y=(int)sqrt(x);
for(i=0;p[i]<=y+1;++i)
{
nr=0;
while(x%p[i]==0) x/=p[i],++nr;
if(nr==0)continue;
nrd*=(nr+1);
sd*=(pow(p[i],nr+1)-1)/(p[i]-1);
}
if(x!=1)nrd=(nrd*2)%9973,sd=(sd*(p[i]+1))%9973;
printf("%lld %lld\n",nrd,sd);
}
return 0;
}