Pagini recente » Istoria paginii runda/test_icrisop_2 | Istoria paginii runda/yu2 | Istoria paginii olimpici | Istoria paginii runda/sha/clasament | Cod sursa (job #2013776)
#include <fstream>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
int k, t, nr, s = 1, div = 1;
unsigned long long n;
int OK[1000010], prim[78495];
int calcul (int x, int y)
{
int s = 1;
while (y + 1)
{
s = s * x;
y--;
}
return (s - 1) / (x - 1);
}
int main()
{
for (int i = 2; i <= 1000000; i++)
{
if (OK[i] == 0)
{
for (unsigned long long j = i * i; j <= 1000000; j = j + i)
OK[j] = 1;
k++;
prim[k] = i;
}
}
in >> t;
for (int i = 1; i <= t; i++)
{
in >> n;
k = 0;
nr = 0;
div = 1;
s = 1;
while (n != 1)
{
nr = 0;
k++;
if (n % prim[k] == 0)
{
while (n % prim[k] == 0)
{
n = n / prim[k];
nr++;
}
div = div * (nr + 1);
s = s * calcul (prim[k], nr);
}
}
out << div << ' ' << s << '\n';
}
return 0;
}