Pagini recente » Cod sursa (job #2389153) | Cod sursa (job #2644976) | Cod sursa (job #347006) | Cod sursa (job #2163492) | Cod sursa (job #2918051)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
const int VMAX = 1e6;
const int MOD = 9973;
int t;
vector<int> primes;
void buildPrimes(int n = VMAX) {
vector<bool> seive(n + 1);
seive[0] = seive[1] = 1;
primes.push_back(2);
for(int i = 4; i <= n; i += 2) {
seive[i] = 1;
}
for(int i = 3; i <= n; i += 2) {
if(seive[i] == 0) {
primes.push_back(i);
if((long long) i * i <= (long long) n) {
for(int j = i * i; j <= n; j += i) {
seive[j] = 1;
}
}
}
}
}
int main() {
fin >> t;
buildPrimes();
for(int i = 1; i <= t; i++) {
long long n;
fin >> n;
int sum = 1, prod = 1;
for(int i = 0; i < (int) primes.size() && (long long) primes[i] * primes[i] <= n; i++) {
int p = primes[i], q = 0;
int grrPow = 1, sumPow = 1; // muienanefreemgk
while(n % p == 0) {
q++;
n /= p;
grrPow = (long long) grrPow * p % MOD;
sumPow += grrPow;
if(sumPow >= MOD) {
sumPow -= MOD;
}
}
sum = (long long) sum * (q + 1) % MOD;
prod = (long long) prod * sumPow % MOD;
}
if(n > 1) {
sum = (long long) sum * 2 % MOD;
prod = (long long) prod * (n + 1) % MOD;
}
fout << sum << " " << prod << '\n';
}
return 0;
}