Pagini recente » Cod sursa (job #1018775) | Cod sursa (job #2225040) | Cod sursa (job #1921589) | Cod sursa (job #1600537) | Cod sursa (job #2074652)
#include <iostream>
#include <fstream>
#include <vector>
#include <math.h>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
const int MOD = 9973;
int t;
bool use[1000001];
vector<int> primes;
void ciur() {
for (int i = 2; i <= 1e6; ++i) {
if (!use[i]) {
primes.push_back(i);
for (int j = i + i; j <= 1e6; j += i) use[j] = true;
}
}
}
int pow(int a, int n) {
if (n == 0) return 1;
a %= MOD;
if (n % 2 == 0) return pow((a * a), n / 2) % MOD;
return (a * pow(a, n - 1)) % MOD;
}
void solve(long long n) {
long long sum = 1;
long long nd = 1;
int i = 0;
while ((long long)primes[i] * primes[i] <= n) {
if (n % primes[i]) {
i++;
continue;
}
int ap = 0;
long long p = 1;
while (n % primes[i] == 0) {
n /= primes[i];
ap++;
p *= primes[i];
}
nd *= ap + 1;
p *= primes[i];
sum *= (p - 1) / (primes[i] - 1);
sum %= MOD;
i++;
}
if (n > 1) {
nd *= 2;
sum = (sum * (n + 1)) % MOD;
}
out << nd << " " << sum << "\n";
}
int main()
{
ciur();
in >> t;
while (t--) {
long long n;
in >> n;
solve(n);
}
return 0;
}