Pagini recente » Cod sursa (job #101154) | Cod sursa (job #949655) | Cod sursa (job #880256) | Cod sursa (job #1964245) | Cod sursa (job #1460598)
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
#include <vector>
using namespace std;
vector<int> primes;
typedef long long LL;
#define MILLION 1000000
#define MODNR 9973
void ciur() {
vector<char> marked(MILLION + 10, 0);
primes.push_back(2);
for (int i = 3; i <= MILLION; i+=2)
if (!marked[i]) {
primes.push_back(i);
for (int j = i; j <= MILLION; j += i)
marked[j] = 1;
}
}
LL fexp(int x, int p) {
if (p == 1)
return LL(x);
LL aux = fexp(x, p / 2);
if (p % 2)
return aux*aux*LL(x);
return aux*aux;
}
int main() {
freopen("ssnd.in", "r", stdin);
freopen("ssnd.out", "w", stdout);
primes.reserve(100000);
ciur();
int t;
scanf("%d", &t);
while (t--) {
LL n;
scanf("%lld", &n);
int s = 1, nr = 1;
for (auto i = primes.begin(); i != primes.end(); ++i) {
int d = *i;
if (LL(d)*LL(d) > n)
break;
int e = 0;
while (n%d == 0) {
n /= d;
e++;
}
if (e) {
s *= int(((fexp(d, e + 1) - 1) / (d - 1)) % LL(MODNR));
s %= MODNR;
nr *= (e + 1);
}
}
if (n != 1) {
nr <<= 1;
s *= int((n + 1) % LL(MODNR));
s %= MODNR;
}
printf("%d %d\n", nr, s);
}
return 0;
}