Pagini recente » Cod sursa (job #919100) | Cod sursa (job #2271261) | Cod sursa (job #1218644) | Cod sursa (job #707077) | Cod sursa (job #487900)
Cod sursa(job #487900)
#include<fstream>
#include<cstring>
using namespace std;
const int DIM = 1000005;
const int MOD = 9973;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
long long N;
int T, K, P[DIM];
char ciur[DIM];
void erast() {
int i, j;
for(i=2; i<DIM; i++) {
if(ciur[i]==0) {
P[++K]=i;
for(j=i*2; j<DIM; j+=i)
ciur[j]=1;
}
}
}
inline int pow(int x, int p) {
int sol=1;
x%=MOD;
for(; p; p/=2) {
if(p%2==1)
sol*=x, sol%=MOD;
x*=x, x%=MOD;
}
return sol;
}
void solve() {
fin >> N;
int i, p, p1, p2, nd=1, sd=1;
for(i=1; i<=K && P[i] * P[i] <= N; i++) {
if(N%P[i])
continue;
p=0;
while(N%P[i]==0) {
N/=P[i];
++p;
}
nd*=(p+1);
p1 =(pow(P[i], p+1) - 1) % MOD;
p2 =(pow(P[i]-1, MOD-2) % MOD;
sd = (((sd * p1) % MOD) * p2) % MOD;
}
if(N > 1) {
nd *= 2;
sd = (sd*(N+1) % MOD);
}
fout << nd << " " << sd << "\n";
}
int main() {
erast();
for(fin >> T; T; --T)
solve();
}