Pagini recente » Cod sursa (job #25730) | Cod sursa (job #745184) | Cod sursa (job #1582990) | Cod sursa (job #2962318) | Cod sursa (job #1221370)
#include <fstream>
#include <bitset>
#define LL long long
#define Max_N 1000010
#define MOD 9973
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int T, K, P[Max_N];
LL N;
bitset < Max_N > V;
void Ciur()
{
for (int i=2; i<=Max_N; i++)
{
if (!V[i])
{
P[++K] = i;
for (int j=i+i; j<=Max_N; j+=i)
V[j] = 1;
}
}
}
LL lgput(LL x, LL p)
{
LL val = 1;
while (p)
{
if (p & 1) val = val * x;
x = x * x;
p = p / 2;
}
return val;
}
void Solve()
{
fin >> N;
LL nd = 1, sd = 1;
for (int i=1; i <= K && P[i] * P[i] <= N; i++)
{
if (N % P[i]) continue;
int p = 0;
while (N % P[i] == 0)
{
N /= P[i];
p++;
}
nd *= (p + 1);
sd = (sd * (lgput(P[i], p+1) - 1) / (P[i] - 1)) % MOD;
}
if (N > 1)
{
nd *= 2;
sd = (sd * (N * N - 1) / (N - 1)) % MOD;
}
fout << nd << ' ' << sd << '\n';
}
int main()
{
Ciur();
for (fin >> T; T; T--)
{
Solve();
}
fout.close();
return 0;
}