Pagini recente » Cod sursa (job #1670858) | Rating ileana alexandru (ileana20) | Cod sursa (job #1430262) | Cod sursa (job #1450976) | Cod sursa (job #2335114)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin ("ssnd.in");
ofstream cout ("ssnd.out");
const int MOD = 9973;
const int INF = 1e6;
int t;
long long n;
int low[1000005];
vector <int> p;
int P(int n, int p) {
int sol = 1, x = n;
for(; p; p >>= 1) {
if(p & 1)
sol = 1LL * sol * x % MOD;
x = 1LL * x * x % MOD;
}
return sol;
}
int main() {
cin >> t;
low[2] = low[4] = 2; p.push_back(2);
for(int i = 3; i <= INF; i += 2) {
if(!low[i]) {
low[i] = i;
p.push_back(i);
}
for(int j = 0; j < p.size() && p[j] <= low[i] && 1LL * i * p[j] <= n; j++)
low[i * p[j]] = p[j];
}
for(; t; t--) {
cin >> n;
int nd = 1, sd = 1;
for(int i = 0; 1LL * p[i] * p[i] <= n && i < p.size(); i++) {
if(n % p[i] == 0) {
int e = 1;
while(n % p[i] == 0)
n /= p[i], e++;
nd *= e;
sd *= P(p[i], e) - 1; sd %= MOD;
sd *= P(p[i] - 1, MOD - 2); sd %= MOD;
}
}
if(n > 1) {
nd *= 2;
sd = 1LL * sd * (n + 1) % MOD;
}
cout << nd << " " << sd << "\n";
}
return 0;
}