Pagini recente » Cod sursa (job #1266562) | Cod sursa (job #786909) | Cod sursa (job #1561439) | Cod sursa (job #266083) | Cod sursa (job #950451)
Cod sursa(job #950451)
#include<fstream>
#define MAX 1000001
#define IN "ssnd.in"
#define OUT "ssnd.out"
#define MODULO 9973
#include<bitset>
using namespace std;
ifstream in(IN);
ofstream out(OUT);
int T,nrp;
bitset <MAX> prim ;
int p[MAX/2];
long long N;
void ciur();
void rezolva();
inline long long putere(long long x, long long p);
int main()
{
ciur();
in>>T;
for(int i=0; i<T; i++)
rezolva();
in.close();
out.close();
return 0;
}
void ciur()
{
for(int i=2; i <= MAX; i++)
if(prim[i]==0)
{
for(int j=i+i; j <= MAX; j+=i)
prim[j]=1;
p[++nrp]=i;
}
}
void rezolva()
{
in>>N;
long long q=1, sdiv=1, ndiv=1;
int pp;
for(int i=1; i <= nrp && 1LL * p[i] * p[i] <= N ; ++i)
{
if(N%p[i])
continue;
pp=1;
q=p[i];
while(N%p[i]==0)
pp++,
N/=p[i],
q*=p[i];
ndiv*=pp;
sdiv = ( sdiv * (q-1) / p[i]-1 ) % MODULO;
}
if(N>1)
ndiv*=2,
sdiv = ( 1LL * sdiv * (N+1) ) % MODULO;
out<<ndiv<<' '<<sdiv<<'\n';
}
inline long long putere(long long x, long long p)
{
long long sol=1;
while(p)
{
if(p%2==1)
sol=x*sol;
x*=x;
p/=2;
}
return sol;
}