Pagini recente » Cod sursa (job #1612285) | Cod sursa (job #2875694) | Cod sursa (job #1664957) | Cod sursa (job #170805) | Cod sursa (job #2144538)
#include <iostream>
#include <fstream>
#include <bitset>
#define lim 1000005
#define modul 9973
using namespace std;
bitset <lim> nope;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
long long t, k, i, j, x, im=1;
long long prime[lim];
void ciur()
{
for(i=2; i<=lim; ++i)
{
if(nope[i]==0)
{
prime[++k]=i;
for(j=i+i; j<=lim; j=j+i)
{
nope[j]=1;
}
}
}
}
int rezolvarea(long long x)
{
long long nf, nd=1, sd=1, cop, i, im=1;
for(i=1; i<=k && 1LL*prime[i]*prime[i]<=x; ++i)
{
if(x%prime[i]==0)
{
nf=0;
while(x%prime[i]==0)
{
x/=prime[i];
++nf;
}
nd=nd*(nf+1);
cop=prime[i];
cop%=modul;
++nf;
while(nf>1)
{
if(nf%2==0)
{
cop=cop*cop;
cop=cop%modul;
nf/=2;
}
else
{
im=im*cop;
cop*=cop;
cop%=modul;
nf=(nf-1)/2;
}
}
cop*=im;
--cop;
cop%=modul;
sd=(sd*((cop)/(prime[i]-1))%modul)%modul;
}
}
if(x>1)
{
nd*=2;
sd=1LL*sd*(x+1);
sd=sd%modul;
}
sd=sd%modul;
out<<nd<<" "<<sd<<"\n";
}
int main()
{
long long t, i, x;
ciur();
in>>t;
for(i=1; i<=t; ++i)
{
in>>x;
rezolvarea(x);
}
return 0;
}