Pagini recente » Cod sursa (job #3329597) | Cod sursa (job #3319303) | Cod sursa (job #1445856) | Cod sursa (job #3326125) | Cod sursa (job #3357822)
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
long long n, i, k, d, w, j, nr, x, p, s, v[500001];
bool ciur[1000001];
long long powmod(long long base, long long exp, long long mod) {
long long result = 1;
base %= mod;
while (exp > 0) {
if (exp & 1) result = (result * base) % mod;
base = (base * base) % mod;
exp >>= 1;
}
return result;
}
int main() {
fin >> n;
ciur[1] = 1;
for (i = 2; i <= 1000000; i++) {
if (!ciur[i]) {
v[++k] = i;
for (j = i * i; j <= 1000000; j += i)
ciur[j] = 1;
}
}
for (i = 1; i <= n; i++) {
fin >> x;
s = 1;
p = 1;
for (d = 1; d <= k && v[d] * v[d] <= x; d++) {
if (x % v[d] == 0) {
nr = 0;
while (x % v[d] == 0) {
nr++;
x /= v[d];
}
s *= (nr + 1);
long long power = powmod(v[d] % 9973, nr + 1, 9973);
long long denom = powmod((v[d] - 1) % 9973, 9971, 9973); // Fermat's little theorem: inv(a) = a^(p-2) mod p
long long sum = ((power - 1 + 9973) % 9973) * denom % 9973;
p = (p * sum) % 9973;
}
}
if (x > 1) {
s *= 2;
long long modx = x % 9973;
long long power = (modx * modx) % 9973;
long long sum = (power - 1 + 9973) % 9973;
long long denom = powmod((modx - 1 + 9973) % 9973, 9971, 9973);
sum = sum * denom % 9973;
p = (p * sum) % 9973;
}
fout << s << " " << p << "\n";
}
return 0;
}