Pagini recente » Cod sursa (job #1563760) | Borderou de evaluare (job #1036177) | Cod sursa (job #1839924) | Cod sursa (job #2669020) | Cod sursa (job #694335)
Cod sursa(job #694335)
#include<fstream>
using namespace std;
const int Z = 9973;
const int C = 1005100;
int ci[C+2],v[C];
int inv[Z+2];
long long nr,s;
int u;
void ciur()
{
int i,j;
ci[1]=true;
for(i=2;i*i<C;i++)
if(!ci[i])
for(j=i*i;j<C;j+=i)
ci[j]=true;
for(i=1;i<C;i++)
if(!ci[i])
v[++u]=i;
}
void desc(long long n)
{
nr=s=1;
long long p;
int i,ct;
for(i=1;(long long)v[i]*v[i]<=n;i++)
{
if(n%v[i]!=0)
continue;
p=v[i];
ct=1;
while(n%v[i]==0)
{
ct++;
p=p*v[i];
n/=v[i];
}
nr*=ct;
s = s*(p-1)/(v[i]-1);
//s=(s*minus1(p,1)%Z*inv[minus1(v[i],1)])%Z;
}
if(n!=1)
{
nr*=2;
s=s*(n+1);
}
}
ifstream in("ssnd.in");
ofstream out("ssnd.out");
int main()
{
//freopen("ssnd.in","r",stdin);
//freopen("ssnd.out","w",stdout);
int i,x,y,d,t;
long long n;
ciur();
in>>t;
for(i=1;i<=t;i++)
{
//s=1;
in>>n;
desc(n);
out<<nr%Z<<" "<<s%Z<<"\n";
}
return 0;
}