Pagini recente » Cod sursa (job #2614485) | Cod sursa (job #1782154) | Cod sursa (job #2706117) | Cod sursa (job #1393918) | Cod sursa (job #2195039)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
const long long MOD=9973;
const long long RAD=1234567;
bool prime[RAD+5];
long long prim[RAD+5],y=0;
void build()
{
long long i,j;
for(i=2;i<=RAD;i++)
prime[i]=1;
for(i=4;i<=RAD;i+=2)
prime[i]=0;
for(i=3;i*i<=RAD;i+=2)
if(prime[i]==1)
for(j=i*i;j<=RAD;j+=i)
prime[j]=0;
for(i=1;i<=RAD;i++)
if(prime[i]==1)
prim[++y]=i;
}
void slove(long long x)
{
long long cnt=1,sum=1;
long long p=1;
while(prim[p]*prim[p]<=x)
{
bool e=0;
long long val=prim[p],cate=1;
while(x%prim[p]==0)
{
e=1;
x/=prim[p];
val*=prim[p];
cate++;
}
if(e==1)
{
sum*=(val-1)/(prim[p]-1);
sum%=1LL*MOD;
cnt*=cate;
}
p++;
}
if(x>1)
{
cnt*=2;
sum*=(x*x-1)/(x-1);
sum%=1LL*MOD;
}
fout<<cnt<<" "<<sum<<"\n";
}
int main()
{
build();
long long t;
fin>>t;
while(t--)
{
long long a;
fin>>a;
slove(a);
}
return 0;
}