Pagini recente » Cod sursa (job #205669) | Cod sursa (job #338337) | Cod sursa (job #2491278) | Cod sursa (job #1067497) | Cod sursa (job #1147560)
/*
Keep It Simple!
*/
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
#include<stdio.h>
#define MOD 9973
int C[80000],nrd,T;
bool viz[1000000];
void Ciur()
{
C[1] = 2;
nrd++;
for (int i = 3; i <= 1000000; i += 2)
{
if (viz[i]) continue;
C[++nrd] = i;
for (int j = i; j <= 1000000; j += i)
viz[j] = 1;
}
}
int lgpow(int a, int b)
{
int sol = 1;
while (b)
{
if (b % 2)
sol = (1LL * sol*a) % MOD;
a = (1LL * a*a) % MOD;
b /= 2;
}
return sol;
}
int main()
{
freopen("ssnd.in", "r", stdin);
freopen("ssnd.out", "w", stdout);
Ciur();
scanf("%d", &T);
while (T--)
{
int Nr, NrDiv = 1, SumaDiv = 1;
scanf("%d",&Nr);
for (int i = 1; i <= nrd && 1LL * C[i] * C[i] <= Nr; i++)
if (Nr%C[i] == 0)
{
int cnt = 0;
while (Nr%C[i] == 0 && Nr) { cnt++; Nr /= C[i]; }
NrDiv *= (cnt + 1);
SumaDiv = (1LL*SumaDiv * (lgpow(C[i],cnt+1) - 1) * (lgpow(C[i]-1,MOD-2))) % MOD;
}
if (Nr > 1)
{
NrDiv *= 2;
SumaDiv = (1LL * SumaDiv * (Nr+1)) % MOD;
}
printf("%d %d\n", NrDiv, SumaDiv);
}
return 0;
}