Pagini recente » Cod sursa (job #2961191) | Cod sursa (job #935422) | Cod sursa (job #980808) | Cod sursa (job #2330093) | Cod sursa (job #1150384)
#include <stdio.h>
#define M 9973
using namespace std;
int nrp, nrput, aux;
long long int nrdiv, sdiv, n, prim[1000001];
bool p[1000001];
void ciur()
{
for (int i=2; i<=1000000; i++)
{
if (p[i]==false)
{
prim[nrp++]=i;
for (int j=2*i; j<=1000000; j+=i)
p[j]=true;
}
}
}
long long int ridput(long long int b, int p)
{
long long int r=1;
while (p)
{
if (p%2==0)
{
b*=b;
p>>=1;
}
p--;
r*=b;
}
return r;
}
void rezolv(long long int x)
{
while(n%x==0)
{
nrput++;
n/=x;
}
nrput++;
sdiv=(sdiv*((ridput(x, nrput)-1)/(x-1))%M)%M;
nrdiv*=nrput;
}
int main()
{
freopen("ssnd.in", "r", stdin);
freopen("ssnd.out", "w", stdout);
ciur();
int t;
for (scanf("%d", &t); t--;)
{
nrdiv=sdiv=1;
scanf("%lld", &n);
for (int i=0; prim[i]*prim[i]<=n; i++)
if (n%prim[i]==0)
{
rezolv(prim[i]);
nrput=0;
}
if (n>1)
{
nrdiv<<=1;
sdiv*=((n*n-1)/(n-1))%M;
}
printf("%lld %lld\n", nrdiv, sdiv%M);
}
return 0;
}