Pagini recente » Cod sursa (job #1343585) | Cod sursa (job #831558) | Cod sursa (job #1587278) | Cod sursa (job #2111843) | Cod sursa (job #2195035)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
const int MOD=9973;
const int RAD=1000000;
bool prime[RAD+5];
long long prim[RAD+5],y=0;
void build()
{
for(int i=2;i<=RAD;i++)
prime[i]=1;
for(int i=4;i<=RAD;i+=2)
prime[i]=0;
for(int i=3;i*i<=RAD;i+=2)
if(prime[i]==1)
for(int j=i*i;j<=RAD;j++)
prime[j]=0;
for(int i=1;i<=RAD;i++)
if(prime[i]==1)
prim[++y]=i;
}
void slove(long long x)
{
long long cnt=1,sum=1;
int p=1;
while(prim[p]*prim[p]<=x)
{
int val=prim[p],cate=1;
while(x%prim[p]==0)
{
x/=prim[p];
val*=prim[p];
cate++;
}
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();
int t;
fin>>t;
while(t--)
{
int a;
fin>>a;
slove(a);
}
return 0;
}