Pagini recente » Cod sursa (job #517547) | Cod sursa (job #2315151) | Cod sursa (job #1379375) | Cod sursa (job #2466294) | Cod sursa (job #1822183)
#include <fstream>
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
const int N = 1000010, mod = 9973;
long long x;
int t, i, k, nr, aux, nrd, sd, v[N], p1, p2;
bool viz[N];
int putere(int x, int y) {
int aux = 1;
x %= mod;
for(; y; y >>= 1) {
if (y & 1) {
aux = (aux * x) % mod;
}
x *= x;
x %= mod;
}
return aux;
}
void ciur(){
long long i, j;
viz[0] = 1;
viz[1] = 1;
v[1] = 2;
k = 1;
for (i = 3; i < N; i += 2) {
if (viz[i] == 0) {
v[++k] = i;
for (j = i + i; j < N; j += i) {
viz[j] = 1;
}
}
}
}
int main(){
ciur();
fin >> t;
for(; t; --t) {
fin >> x;
i = 1;
nrd = 1;
sd = 1;
while (x > 1 && 1LL * v[i] * v[i] <= x){
if (x % v[i] == 0) {
aux = 1;
nr = 0;
while (x % v[i] == 0)
x /= v[i], nr++;
aux = aux * v[i];
nrd = nrd * (nr + 1);
sd = ( sd*(aux - 1) / (v[i] - 1) ) % mod;
p1 = ( putere(v[i], nr + 1) - 1) % mod;
p2 = putere(v[i] - 1, mod - 2) % mod;
sd = ( ( (sd * p1) % mod ) * p2 ) % mod;
if (sd == 0) {
sd = mod;
}
}
i++;
}
if (x > 1) {
nrd *= 2;
sd = ( 1LL * sd * (x + 1) % mod );
}
fout << nrd << ' ' << sd << "\n";
}
return 0;
}