Pagini recente » Cod sursa (job #2076115) | Cod sursa (job #1237896) | Cod sursa (job #1640979) | Cod sursa (job #2532368) | Cod sursa (job #2834429)
#include <bits/stdc++.h>
#define LL long long
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int calcNrDiv(LL n)
{
int nrDiv = 1, p = 0;
while (n % 2 == 0)
{
p++;
n /= 2;
}
nrDiv *= p + 1;
for (int d = 3; d * d <= n; d += 2)
{
p = 0;
while (n % d == 0)
{
p++;
n /= d;
}
nrDiv *= p + 1;
}
if (n > 1)
nrDiv *= 2;
return nrDiv;
}
LL calcSumDiv(LL n)
{
LL sumDiv = 1, pwr = 2;
while (n % 2 == 0)
{
pwr *= 2;
n /= 2;
}
sumDiv *= pwr - 1;
for (int d = 3; d * d <= n; d += 2)
{
pwr = d;
while (n % d == 0)
{
pwr *= d;
n /= d;
}
sumDiv *= (pwr - 1) / (d - 1);
}
if (n > 1)
sumDiv *= (n * n - 1) / (n - 1);
return sumDiv;
}
int main()
{
int t;
fin >> t;
for (int i = 0; i < t; i++)
{
LL x;
fin >> x;
fout << calcNrDiv(x) << ' ' << calcSumDiv(x) << '\n';
}
return 0;
}