Pagini recente » Cod sursa (job #631740) | Cod sursa (job #2934873) | Monitorul de evaluare | Cod sursa (job #1991712) | Cod sursa (job #1607856)
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
#define SIZE 1000003
#define MODULO 9973
#define BIGBIGBIG 10000000000000003
bool fr[SIZE];
int v[75000];
inline int powi(int x, int pow)
{
long long s=1;
for(int i=0; i<pow; i++)
{
s*=x;
if(s>BIGBIGBIG)
{
s%=MODULO;
}
}
return s;
}
int main()
{
int con,d,conj,srt,l,m,n,t;
long long cd,x,s;
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%d ",&t);
fr[2]=0;
int sqrtSize=SIZE;
int u=2;
v[1]=2;
v[2]=3;
for(int i=5; i<=sqrtSize; i++)
{
if(i%2!=0&&i%3!=0&&fr[i]==0)
{
v[++u]=i;
con=2;
d=i;
s=d*con;
while(s<=SIZE)
{
fr[s]=1;
s=d*con;
con++;
}
}
}
for(int i=1; i<=t; i++)
{
scanf("%lld ",&x);
srt=sqrt(x);
s=1;
cd=1;
for(conj=1; x>1&& v[conj]*v[conj]<=x; conj++)
{
if(x%v[conj]){
continue;
}
con=0;
while(x%v[conj]==0)
{
con++;
x=x/v[conj];
}
cd=cd*(con+1);
n=powi(v[conj],con+1)-1;
m=v[conj]-1;
l=n/m;
if(s>BIGBIGBIG)
{
s%=MODULO;
}
s=s*l;
}
if(x>1)
{
cd*=2;
s*=((x*x)-1)/(x-1);
if(s>BIGBIGBIG)
{
s%=MODULO;
}
}
s%=MODULO;
printf("%lld %lld\n",cd,s);
}
fclose(stdin);
fclose(stdout);
return 0;
}