Pagini recente » Cod sursa (job #1647348) | Cod sursa (job #2292762) | Cod sursa (job #523841) | Cod sursa (job #2923013) | Cod sursa (job #2935607)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
const int nmax=1000005;
const int MOD=9973;
long long n;
int t,k,p[nmax];
bitset <nmax> viz;
void ciur(){
for(int i=2;i<nmax;i++){
if(viz[i]==0){
p[++k]=i;
for(int j=i+i;j<nmax;j+=i)
viz[j]=1;
}
}
}
int pow(int x,int p){
int rez = 1;
x %= MOD;
for(; p; p >>= 1) {
if(p & 1) {
rez *= x;
rez %= MOD;
}
x *= x;
x %= MOD;
}
return rez;
}
void rezolvare(){
fin>>n;
int nd=1;
int sd=1;
for(int i = 1; i <= k && 1LL * p[i] * p[i] <= n; ++i) {
if(n % p[i]) continue;
int put = 0;
while(n % p[i] == 0) {
n /= p[i];
++put;
}
nd *= (put+1);
int p1 = (pow(p[i], put+1) - 1) % MOD;
int p2 = pow(p[i]-1, MOD-2) % MOD;
sd = (((sd * p1) % MOD) * p2) % MOD;
}
if(n>1){
nd*=2;
sd=(1LL*sd*(n+1)%MOD);
}
fout<<nd<<" "<<sd;
}
int main()
{
ciur();
for(fin>>t;t;--t)
rezolvare();
return 0;
}