Pagini recente » Cod sursa (job #835460) | Cod sursa (job #74061) | Cod sursa (job #1765213) | Cod sursa (job #2330437) | Cod sursa (job #2189822)
#include <iostream>
#include <fstream>
#define NMAX 1000003
#define MOD 9973
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
long long t;
long long Prime[NMAX];
long long NP;
long long v[NMAX];
void Ciur()
{
for(long long i=2;i<=NMAX;i++)
{
if (v[i] == 0)
{
Prime[++NP] = i;
for(long long j=i+i;j<=NMAX;j+=i)
v[j] = 1;
}
}
}
long long factori[NMAX];
long long pow (long long x,long long po)
{
int rez = 1;
x %= MOD;
while(po)
{
if (po % 2)
{
rez *= x;
rez %= MOD;
}
x *= x;
x %= MOD;
po /= 2;
}
return rez;
}
void Solve(long long x)
{
if (v[x] == 0)
{
fout<<2<<' ';
fout<<x%MOD+1%MOD<<'\n';
return;
}
long long lastI=NP;
for(long long i=1;i<=NP;i++)
{
if (x == 0 || x == 1)
{
lastI = i;
break;
}
while(x%Prime[i] == 0)
{
factori[Prime[i]]++;
x /= Prime[i];
}
}
long long nrFact = 1;
long long suma = 1;
for(long long i=1;i<=lastI;i++)
{
long long h = factori[Prime[i]] + 1;
nrFact *= h;
long long c = (pow(Prime[i],h) - 1) / (Prime[i]-1);
suma *= c;
factori[i] = 0;
}
fout<<nrFact<<' '<<suma<<endl;
}
int main()
{
Ciur();
fin>>t;
for(long long i=0;i<t;i++)
{
long long x;
fin>>x;
Solve(x);
}
return 0;
}