Pagini recente » Cod sursa (job #864967) | Cod sursa (job #1948443) | Cod sursa (job #950381) | Cod sursa (job #152113) | Cod sursa (job #2692202)
#include <fstream>
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
long long n;
int t, p[80001], k, nrd, sd;
const int mod = 9973, N = 1000000;
bool v[N + 1];
void ciur () {
for (int i = 2; i <= N; i++)
if (not v[i]) {
p[++k] = i;
for (int j = 2 * i; j <= N; j += i)
v[j] = true;
}
}
int lgput (int a, int b) {
int r = 1;
while (b) {
if (b % 2 == 1)
r = (r * a) % mod;
a = (a * a) % mod;
b /= 2;
}
return r;
}
int main()
{
ciur ();
fin >> t;
for (int tt = 1; tt <= t; tt++) {
fin >> n;
nrd = 1; sd = 1;
for (int i = 1; i <= k and 1LL * p[i] * p[i] <= n; i++) {
if (n % p[i])
continue;
int e = 0;
while (n % p[i] == 0) {
n /= p[i];
e++;
}
//fout << p[i] << ' ' << e << '\n';
nrd *= (e + 1);
int de = lgput (p[i], e + 1) - 1;
int im = lgput (p[i] - 1, mod - 2);
sd = (((de * im) % mod) * sd) % mod;
}
if (n > 1) {
int e = 1;
nrd *= (e + 1);
sd = (1LL * (n + 1) * sd) % mod;
}
fout << nrd << ' ' << sd << '\n';
}
return 0;
}