Pagini recente » Cod sursa (job #3262271) | Cod sursa (job #2669238) | Cod sursa (job #27145) | Cod sursa (job #1821763) | Cod sursa (job #2020889)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
long long n, i, j, t, nr, pr, d, s, in, x, prm[100110];
bool ciur[100110];
long long alab (long long a, long long b)
{
long long rez = 1;
while (b != 0)
{
if (b % 2 == 0)
{ a = (a*a) % 9973; b /= 2; }
if (b % 2 == 1)
{ rez = (rez*a) % 9973; b--; }
}
return rez;
}
int main () {
for (i = 2; i <= 100100; i++)
if (ciur[i] == 0)
{
pr++; prm[pr] = i;
for (j = 2; i * j <= 100100; j++) ciur[i * j] = 1;
}
fin >> t;
for (i = 1; i <= t; i++)
{
fin >> n;
x = n;
in = 1;
d = 1;
s = 1;
while (n != 1 && prm[in] < sqrt(x) && in <= pr)
{
while (n % prm[in] == 0)
{
n /= prm[in];
nr++;
}
if (nr != 0)
{
d *= nr+1;
j = alab (prm[in], nr+1);
s = s * ((j-1) / (prm[in]-1));
s %= 9973;
d %= 9973;
nr = 0;
}
in++;
}
if (n != 1)
{
s += n + 1;
}
fout << d << " " << s << "\n";
}
}