Pagini recente » Monitorul de evaluare | Cod sursa (job #2536438) | Cod sursa (job #350777) | Cod sursa (job #1951162) | Cod sursa (job #2615187)
#include <bits/stdc++.h>
#define int long long
#define DAU ios_base::sync_with_stdio(false); fin.tie(0); fout.tie(0);
#define PLEC fin.close(); fout.close(); return 0;
using namespace std;
const string problem("ssnd");
ifstream fin(problem + ".in");
ofstream fout(problem + ".out");
typedef long long i64;
const int N(1e6), MOD(9973);
bool ciur[N + 5];
vector<int> prime;
void Ciur() {
for (int i = 2; i * i <= N; ++i)
if (!ciur[i])
for (int j = i * i; j <= N; j += i)
ciur[j] = 1;
for (int i = 2; i <= N; ++i)
if (!ciur[i])
prime.emplace_back(i);
}
i64 Powlog(i64 baza, i64 exponent) {
i64 putere(1);
while (exponent) {
if (exponent & 1)
putere *= baza;
baza *= baza;
exponent >>= 1;
}
return putere;
}
int q, nrap;
i64 n, d, nrd, sumd;
int32_t main() {
DAU
Ciur();
fin >> q;
while (q--) {
fin >> n;
nrd = sumd = 1;
d = 0;
while (prime[d] * prime[d] <= n) {
if (n % prime[d] == 0) {
nrap = 0;
while (n % prime[d] == 0)
++nrap, n /= prime[d];
nrd *= (nrap + 1);
sumd *= ((Powlog(prime[d], nrap + 1) - 1) / (prime[d] - 1));
sumd %= MOD;
}
++d;
}
if(n > 1) {
nrd *= 2;
sumd *= (n + 1);
sumd %= MOD;
}
fout << nrd << ' ' << sumd << '\n';
}
PLEC
}