Pagini recente » Cod sursa (job #336268) | Cod sursa (job #446886) | Cod sursa (job #2162484) | Cod sursa (job #1709156) | Cod sursa (job #1443804)
#include<fstream>
#include<iostream>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
const int NMAX = 1000005;
const int MOD = 9973;
#define ll long long
ll P[NMAX],viz[NMAX],T,nr,N;
void ciur()
{
P[++nr] = 2;
for(ll i = 3 ; i < NMAX ; i += 2)
if(!viz[i]){
P[++nr] = i;
for(ll j = i*i ; j < NMAX ; j += i)
viz[j] = 1;
}
}
ll pow(ll e,ll b)
{
ll rez = 1;
b %= MOD;
while(e){
if(e % 2){
rez = (rez * b) % MOD;
--e;
}
b = (b * b) % MOD;
e /= 2;
}
return rez;
}
void solve()
{
ll nd = 1,sd = 1;
for(ll i = 1 ; i <= nr && 1LL*P[i] * P[i] <= N ; ++i){
if(N % P[i])
continue;
ll p = 0;
while(N % P[i] == 0){
N /= P[i];
++p;
}
nd = nd * (p + 1);
ll p1 = (pow(p + 1,P[i]) - 1) % MOD;
ll p2 = pow(MOD - 2,P[i] - 1) % MOD;
sd = (((sd * p1)%MOD) * p2) % MOD;
}
if(N > 1) {
nd *= 2;
sd = (1LL*sd*(N+1) % MOD);
}
out<<nd<<" "<<sd<<"\n";
}
int main()
{
ciur();
in>>T;
for( ; T ; --T){
in>>N;
solve();
}
return 0;
}