Pagini recente » Cod sursa (job #1363549) | Cod sursa (job #2001815) | Cod sursa (job #1242037) | Cod sursa (job #1017940) | Cod sursa (job #2384261)
#include <bits/stdc++.h>
#define N 1000005
#define mod 9973
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
typedef unsigned long long ull;
ull t, prime[80000];
ull nr_div = 1, suma = 1, n;
bool ciur[N];
void Ciur()
{
ciur[0] = ciur[1] = 1;
for (int i = 4; i <= N; i += 2)
ciur[i] = 1;
for (int i = 3; i * i <= N; i += 2)
if (!ciur[i])
for (int j = i * i; j <= N; j += 2 * i)
ciur[j] = 1;
for (int i = 1; i <= N; i++)
if (!ciur[i])
prime[++prime[0]] = i;
}
ull Putere(ull p, ull pt)
{
ull ans = 1;
while (pt)
{
if (pt & 1)
{
ans = (ans * p) % mod;
pt--;
}
p = (p * p) % mod;
pt /= 2;
}
return ans % mod;
}
void Solve()
{
nr_div = suma = 1;
int k = 1;
ull val = prime[k];
while (n != 1)
{
if (n % val == 0)
{
ull ex = 0;
while (n % val == 0)
{
n /= val;
ex++;
}
nr_div = (nr_div * (ex + 1)) % mod;
suma = (suma * (Putere(val, ex + 1) - 1) * Putere(val - 1, mod - 2)) % mod;
}
if (val * val <= n)
val = prime[++k];
else val = n;
}
fout << nr_div << " " << suma << "\n";
}
int main()
{
Ciur();
fin >> t;
for (int i = 1; i <= t; i++)
{
fin >> n;
Solve();
}
return 0;
}