Pagini recente » Cod sursa (job #598900) | Cod sursa (job #883640) | Cod sursa (job #498964) | Cod sursa (job #1454206) | Cod sursa (job #1336747)
#include <fstream>
#include <cmath>
#include <vector>
#define MOD 9973
long long powexp(long long base, long long expo)
{
if (!expo)
return 1;
long long rez = 1, p = base;
while (expo) {
if (expo & 1)
rez = (rez * p) % MOD;
p = (p * p) % MOD;
expo /= 2;
}
return rez;
}
int main()
{
long long n, t;
std::vector<bool> isprime(1 + 1e6, true);
std::vector<long long> primes;
primes.reserve(78498);
isprime[0] = isprime[1] = false;
for (long long i = 2; i <= 1e6; ++i) {
if (isprime[i]) {
primes.push_back(i);
if (i < 1e3)
for (long long j = i * i; j <= 1e6; j += i * 2)
isprime[j] = false;
}
}
std::ifstream f("ssnd.in");
std::ofstream g("ssnd.out");
f >> t;
while (t--)
{
f >> n;
long long rez1 = 1, rez2 = 1;
auto i = primes.begin();
auto ll = sqrtl(n);
while (n > 1 && (*i) <= ll && i != primes.end()) {
auto p = (*i);
i++;
auto d = 0;
while (n % p == 0) {
d++;
n /= p;
}
rez1 = (rez1 * (d + 1)) % MOD;
rez2 = (rez2 * (powexp(p, d + 1) - 1)) % MOD;
rez2 = (rez2 * powexp(p - 1, MOD - 2)) % MOD;
}
if (n > 1) {
rez1 = (2 * rez1) % MOD;
rez2 = (rez2 * (n + 1)) % MOD;
}
g << rez1 << " " << rez2 << "\n";
}
f.close();
g.close();
}