Pagini recente » Cod sursa (job #1302057) | Rating Topana Cristian (Crissti) | Cod sursa (job #492730) | Cod sursa (job #361231) | Cod sursa (job #494468)
Cod sursa(job #494468)
#include<cstdio>
const int r = 9973;
const int N = 1<<20;
bool c[N];
int pr[N],np;
void ciur()
{
int i,j;
for(i=2;i*i<N;++i)
if(!c[i])
for(j=i*i;j<N;j+=i)
c[j]=true;
for(i=2;i<N;++i)
if(!c[i])
pr[++np] = i;
}
long long putere(long long a,int n)
{
long long p = 1;
while(n != 0)
{
if(n&1 != 0)
p *= a;
a *= a;
n >>= 1;
}
return p;
}
void calcul(long long n)
{
int i,pow,nr = 1;
long long s = 1,p;
for(i=1 ; (long long)pr[i]*pr[i] <= n ; ++i)
{
if(n%pr[i] != 0)
continue;
for(pow=0 ; n%pr[i]==0 ; n/=pr[i])
{
++pow;
}
p = putere(pr[i],pow + 1);
s *= (long long)(p - 1) / (pr[i] - 1);
s %= r;
nr *= (pow + 1);
}
if(n != 1)
{
s *= n + 1;
nr <<= 1;
}
s %= r;
printf("%d %d\n",nr,(int)s);
}
int main()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
int t;
ciur();
long long n;
scanf("%d",&t);
while(t--)
{
scanf("%lld",&n);
calcul(n);
}
return 0;
}