Pagini recente » Cod sursa (job #765459) | Cod sursa (job #370093) | Cod sursa (job #1088780) | Cod sursa (job #796014) | Cod sursa (job #494607)
Cod sursa(job #494607)
#include<cstdio>
const int R=9973;
const int N=1<<20;
bool c[N];
int pr[N],np;
void ciur()
{
for (int i=2;i*i<N;++i)
if (!c[i])
for (int j=i*i;j<N;j+=i)
c[j] = true;
for(int 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 pow,nr=1;
long long s=1,p;
for(int 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;
long long n;
ciur();
scanf("%d",&t);
for (int i=1;i<=t;++i)
{
scanf("%lld",&n);
calcul(n);
}
return 0;
}