Pagini recente » Cod sursa (job #3224246) | Cod sursa (job #1606500) | Cod sursa (job #532099) | Cod sursa (job #353298) | Cod sursa (job #2244764)
#include <fstream>
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
#define nr 9973
int len = 0, v[500000], a[1000000];
void ciur() {
int i, j;
v[len++] = 2;
int l = 1000;
for(i = 3; i <= l; i += 2)
if (!a[i]) {
v[len++] = i;
for (j = i * i; j < 1000000; j += i)
a[j] = 1;
}
for (i = l + 1; i < 1000000; i += 2)
if (!a[i])
v[len++] = i;
}
int putere(long long x, int n) {
long long aux = x;
int res = 1;
while (n)
{
if (n & 1)
{
res *= aux;
res %= nr;
}
aux *= aux;
aux %= nr;
n /= 2;
}
return res;
}
int main() {
long long nrdiv, sdiv, p, t, i, j, put;
long long n;
fin >> t;
ciur();
for (j = 1; j <= t; ++j) {
fin >> n;
if (n == 1) {
nrdiv = 1;
sdiv = 1;
} else {
nrdiv = 1;
sdiv = 1;
for (i = 0; v[i] * v[i] <= n; ++i) {
if (n % v[i] == 0) {
n /= v[i];
p = 1;
put = v[i] * v[i];
while (n % v[i] == 0) {
n /= v[i];
++p;
put *= v[i];
}
nrdiv *= (p + 1);
sdiv *= (putere(v[i], p + 1) - 1);
sdiv %= nr;
sdiv *= (putere(v[i] - 1, nr - 2));
sdiv %= nr;
}
}
if (n > 1) {
nrdiv *= 2;
sdiv *= ((n + 1) % nr);
}
sdiv %= nr;
}
fout << nrdiv << ' ' << sdiv << '\n';
}
return 0;
}