Pagini recente » Cod sursa (job #2874380) | Cod sursa (job #2859225) | Cod sursa (job #1933387) | Cod sursa (job #394330) | Cod sursa (job #2474522)
#include <iostream>
#include <fstream>
#define mod 9973
#define Nmax 100000
using namespace std;
int put(int b,int e)
{
int rez=1;
while(e)
{
if(e%2==1)
{
e--;
rez=(rez*b)%mod;
}
else
{
e/=2;
b=(b*b)%mod;
}
}
return rez;
}
int c[Nmax+5],pr[Nmax+5],k=0;
void ciur()
{
for(int i=2; i<=Nmax; i++)
{
if(c[i]==0)
{
pr[k++]=i;
for(int j=i+i; j<=Nmax; j+=i)
c[j]=1;
}
}
}
void desc(int x,int &sd,int &nd)
{
int p=0;
// while(x%2==0)
// {
// x/=2;
// p++;
// }
/* if(p!=0)
{
pd*=(p+1);
sd*=((put(2,p+1)-1))*(put(2-1,mod))%mod;
}*/
for(int i=0; i<k && pr[i]*pr[i]<=x; i++)
{
if(x%pr[i]==0)
{
p=0;
while(x%pr[i]==0)
{
x/=pr[i];
p++;
}
if(p!=0)
{
nd*=(p+1);
sd=((put(pr[i],p+1)-1)/(pr[i]-1))*(put(pr[i]-1,mod-2))%mod;
}
}}
if(x!=1)
{
nd*=2;
sd*=(x+1);
}
}
int main()
{
ifstream fin("n.in");
int n,t;
ciur();
fin>>t;
for(int i=0; i<t; i++)
{
fin>>n;
int sd=1;
int nd=1;
desc(n,sd,nd);
cout<<nd<<" "<<sd<<"\n";
}
return 0;
}