Pagini recente » Cod sursa (job #2837016) | Cod sursa (job #1992777) | Cod sursa (job #2296694) | Cod sursa (job #1636500) | Cod sursa (job #1973363)
#include <fstream>
#include <bitset>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
const int Nmax = 1000005;
const short MOD = 9973;
bitset <Nmax> C;
long long P[Nmax];
inline void ciur()
{
unsigned int i,j;
for(i=2; i<Nmax; i++)
if(C[i]==0)
{
P[++P[0]]=i;
for(j=i+i; j<Nmax; j+=i)
C[j]=1;
}
}
inline long long pow(long long x, short p)
{
long long sol=1,a=x;
short i;
for(i=1; i <= p; i = (i<<1))
{
if((p & i) > 0) sol = (sol * a)%MOD;
a = (a * a)%MOD;
}
return sol;
}
void solutie(long long N)
{
int i,nd=1;
long long sd=1;
for(i=1; P[i]*P[i] <= N; ++i)
if(N % P[i] == 0)
{
short e=0;
while(N % P[i] == 0)
e++,N /= P[i];
long long a=pow(P[i],e+1)%MOD;
nd=nd*(e+1);
sd = (sd*((a-1)/(P[i]-1))%MOD)%MOD;
}
if(N>1)
{
nd*=2;
sd=(sd*(((N*N-1)%MOD)/(N-1))%MOD)%MOD;
}
fout<<nd<<' '<<sd<<'\n';
}
int main()
{
long long N;
short t;
fin>>t;
ciur();
for(; t; --t)
{
fin>>N;
solutie(N);
}
return 0;
}