Pagini recente » Cod sursa (job #831229) | Cod sursa (job #898764) | Cod sursa (job #444485) | Cod sursa (job #1324869) | Cod sursa (job #1443814)
#include<fstream>
#include<bitset>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
const int NMAX = 1000005;
const int MOD = 9973;
int P[NMAX],T,nr;
bitset<NMAX> viz;
long long N;
void ciur()
{
P[++nr] = 2;
for(int i = 3 ; i < NMAX ; i += 2)
if(!viz[i]){
P[++nr] = i;
for(int j = i + i ; j < NMAX ; j += i)
viz[j] = 1;
}
}
int pow(int e,int b)
{
int rez = 1;
b %= MOD;
while(e){
if(e % 2){
rez = (rez * b) % MOD;
--e;
}
b = (b * b) % MOD;
e /= 2;
}
return rez;
}
void solve()
{
int nd = 1,sd = 1;
for(int i = 1 ; i <= nr && 1LL*P[i] * P[i] <= N ; ++i){
if(N % P[i])
continue;
int p = 0;
while(N % P[i] == 0){
N /= P[i];
++p;
}
nd = nd * (p + 1);
int p1 = (pow(p + 1,P[i]) - 1) % MOD;
int 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;
}