Pagini recente » Cod sursa (job #1520403) | Cod sursa (job #1290438) | Cod sursa (job #9845) | Cod sursa (job #1298232) | Cod sursa (job #2201263)
#include <fstream>
#include <vector>
#include <cmath>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
#define MOD 9973
int len = 0;
int v[500000];
int 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;
}
long long putere(long long x, int n) {
long long t = x;
long long res = 1;
while (n) {
if (n & 1) {
res *= t;
res %= MOD;
}
t *= t;
t %= MOD;
n /= 2;
}
return res;
}
int main() {
int nrd, sd, p, t, i, ii;
long long n;
f >> t;
ciur();
for (ii = 1; ii <= t; ++ii) {
f >> n;
if (n == 1) {
nrd = 1;
sd = 1;
} else {
nrd = 1;
sd = 1;
for (i = 0; i < len; ++i)
if (n != 1 && v[i] * v[i] <= n)
if (n % v[i] == 0) {
n /= v[i];
p = 1;
while (n % v[i] == 0) {
n /= v[i];
++p;
}
nrd *= (p + 1);
nrd %= MOD;
sd *= (putere(v[i], p + 1) - 1);
sd %= MOD;
sd *= (putere(v[i] - 1, MOD - 2));
sd %= MOD;
}
if (n > 1) {
nrd *= 2;
nrd %= MOD;
sd *= ((n + 1) % MOD);
sd %= MOD;
}
}
g << nrd << ' ' << sd << '\n';
}
return 0;
}