Pagini recente » Cod sursa (job #3206891) | Cod sursa (job #1754566) | Cod sursa (job #1483271) | Cod sursa (job #2269048) | Cod sursa (job #2714861)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("ssnd.in");
ofstream cout("ssnd.out");
const int MOD = 9937;
const int SQRT = 1e6;
bool d[SQRT + 1];
vector <int> primes;
void Sieve() {
for(int i = 3; i * i <= SQRT; i += 2) {
if(!d[i]) {
for(int j = i * i; j <= SQRT; j += 2 * i) {
d[j] = true;
}
}
}
primes.push_back(2);
for(int i = 3; i <= SQRT; i += 2) {
if(!d[i]) {
primes.push_back(i);
}
}
}
int main() {
Sieve();
int T;
cin >> T;
while(T--) {
long long x;
cin >> x;
int nrd = 1, sd = 1;
for(auto it : primes) {
if(1LL * it * it > x) {
break;
} else if(x % it == 0) {
int exp = 0;
long long prod = 1LL;
while(x % it == 0) {
exp++;
prod *= it;
x /= it;
}
nrd *= (exp + 1);
sd = (sd * (prod * it - 1) / (it - 1)) % MOD;
}
}
if(x > 1) {
nrd *= 2;
sd = (sd * (x + 1)) % MOD;
}
cout << nrd << ' ' << sd << '\n';
}
return 0;
}