Pagini recente » Cod sursa (job #2089534) | Cod sursa (job #1218756) | Cod sursa (job #206135) | Cod sursa (job #388287) | Cod sursa (job #494157)
Cod sursa(job #494157)
#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;
}
inline 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])
{
//p *= 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;
}