Pagini recente » Rating Pavel Mihai (mpavel77) | cartele2 | Sedinta 2009-02-16 | Profil UNIBUC buzu.tudor67 | Cod sursa (job #1776429)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
const long long MOD = 9973;
const long long MAXCIUR = 1e6 + 1;
bitset<MAXCIUR> viz;
long long primes[MAXCIUR], cnt;
inline void ciur() {
primes[++cnt] = 2;
for (long long i = 4; i < MAXCIUR; i += 2)
viz[i] = 1;
for (long long i = 3; i < MAXCIUR; i += 2) {
if (viz[i] == 0) {
primes[++cnt] = i;
for (long long j = i * i; j < MAXCIUR; j += i)
viz[j] = 1;
}
}
}
inline long long power(long long a, long long b) {
long long ans = 1;
if (a < 2)
return a;
for (long long i = 0; (1LL << i) <= b; ++i) {
if (b & (1LL << i)) {
ans = (ans * a) % MOD;
}
a = (a * a) % MOD;
}
return ans % MOD;
}
inline void solve() {
long long n;
fin >> n;
long long d, e;
long long s = 1, nr = 1;
long long a, b;
for (long long i = 1; i <= cnt && 1LL * primes[i] * primes[i] <= n; ++i) {
e = 0;
d = primes[i];
while (n % d == 0) {
++e;
n /= d;
}
if (e == 0)
continue;
nr = ((nr % MOD) * ((e + 1) % MOD)) % MOD;
a = (power(d, e + 1) + MOD - 1) % MOD;
b = power(d - 1, MOD - 2);
s = ((s % MOD) * (a % MOD) * (b % MOD)) % MOD;
}
if (n > 1) {
nr = (nr * 2) % MOD;
s = (1LL * s * (n + 1) % MOD);
}
fout << nr << ' ' << s << '\n';
}
int main()
{
long long t;
ciur();
for (fin >> t; t; --t) {
solve();
}
return 0;
}