Cod sursa(job #522952)
#include<fstream.h>
#include<iostream.h>
#include<math.h>
#define N 1000000
int test,u,p[N]={0},nr;
long long n,t,s;
long v[N],k,i,j,r,q,l;
long long put(long x,long n)
{if(n==0)
return 1;
if(n%2==0)
return put(x,n/2)*put(x,n/2);
else
return x*put(x,(n-1)/2)*put(x,(n-1)/2);}
int main()
{fstream f1("ssnd.in",ios::in);
fstream f2("ssnd.out",ios::out);
f1>>test;
for(u=1;u<=test;u++)
{f1>>n;
for(k=1;k<=sqrt(n);k++)
v[k]=0;
j=0;
t=n;
s=1;
nr=1;
for(i=2;i<=sqrt(n);i++)
if(v[i]==0)
{while(t%v[i]==0)
{j++;
t/=v[i];
if(t==1)
{nr=nr*(j+1);
if(j==1)
s=s*(v[i]+1);
else
s=s*(put(v[i],j+1)-1)/(v[i]-1);
j=0;}}
if(j!=0)
{nr=nr*(j+1);
if(j==1)
s=s*(v[i]+1);
else
s=s*(put(v[i],j+1)-1)/(v[i]-1);
j=0;}
for(l=i+i;l<=sqrt(n);l+=i)
v[l]=1;}
if(t>1)
{nr=nr*2;
s=s*(t+1);}
if(s==1)
{nr=2;
s+=n;}
f2<<nr<<" "<<s%9973<<endl;}
f1.close();
f2.close();
return 0;}