Pagini recente » Cod sursa (job #3249310) | Cod sursa (job #461026) | Cod sursa (job #3220665) | Cod sursa (job #2723997) | Cod sursa (job #3264705)
#include <bits/stdc++.h>
using namespace std;
const int MOD = 9973;
long long n;
int prime[1000001], k;
bool marked[1000001];
int exp(int base, int pwr) {
int res = 1;
while (pwr != 0) {
if (pwr & 1) {
res = (res * base) % MOD;
}
base = (base * base) % MOD;
pwr >>= 1;
}
return res;
}
int card, sum;
void pfac(long long n) {
int m = 0;
card = 1;
sum = 1;
for (int i = 1; i <= k && n != 1; ++i) {
int pow = 0;
while (n % prime[i] == 0) {
++pow;
n /= prime[i];
}
if (pow != 0) {
card = card * (pow + 1) % MOD;
sum = sum * (exp(prime[i], pow + 1) - 1 + MOD) % MOD * exp(prime[i] - 1, MOD - 2) % MOD;
}
}
}
int main() {
ifstream cin("ssnd.in");
ofstream cout("ssnd.out");
int t;
cin >> t;
for (int i = 2; i <= 1e6; ++i) {
if (!marked[i]) {
prime[++k] = i;
for (int j = i; j <= 1e6; j += i) {
marked[j] = true;
}
}
}
while (t--) {
cin >> n;
pfac(n);
cout << card << " " << sum << "\n";
}
}