Pagini recente » Cod sursa (job #272376) | Monitorul de evaluare | preONI 2008 - Runda 3, Clasele 5-8 | Cod sursa (job #3236705) | Cod sursa (job #3283568)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
const int nmax = 1'000'000;
bitset<nmax + 1> sieve;
vector<int> primes;
void prec() {
sieve.set();
sieve[0] = sieve[1] = 0;
for (int i = 2; i <= nmax; ++i) {
if (sieve[i]) {
primes.emplace_back(i);
if (i <= nmax / i) {
for (int j = i * i; j <= nmax; j += i) {
sieve[j] = 0;
}
}
}
}
}
void testcase() {
long long n;
fin >> n;
long long nrdiv = 1, sumdiv = 1;
for (auto& d : primes) {
if (1ll * d * d > n) {
break;
}
if (n % d == 0) {
int e = 0;
long long p = 1;
while (n % d == 0) {
++e, p *= d;
n /= d;
}
nrdiv *= e + 1;
sumdiv *= (p * d - 1) / (d - 1);
}
}
if (n > 1) {
nrdiv *= 2;
sumdiv *= n + 1;
}
fout << nrdiv << " " << sumdiv << "\n";
}
int main() {
prec();
int tc;
fin >> tc;
while (tc--) {
testcase();
}
}