Pagini recente » Cod sursa (job #1283586) | Cod sursa (job #2241185) | Cod sursa (job #858277) | Cod sursa (job #253455) | Cod sursa (job #2189827)
#include <iostream>
#include <fstream>
#include <bitset>
#define NMAX 1000003
#define MOD 9973
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int t;
int Prime[NMAX];
int NP;
bitset <NMAX> v;
void Ciur()
{
for(int i=2;i<NMAX;i++)
{
if (v[i] == 0)
{
Prime[++NP] = i;
for(int j=i+i;j<NMAX;j+=i)
v[j] = 1;
}
}
}
int pow (int x,int 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;
fin>>x;
if (v[x] == 0)
{
fout<<2<<' ';
fout<<x%MOD+1%MOD<<'\n';
return;
}
int nrFact = 1;
int suma = 1;
for(int i=1;i<=NP && 1LL*Prime[i]*Prime[i] <= x;i++)
{
if (x%Prime[i] != 0)
continue;
int p = 0;
while(x%Prime[i] == 0)
{
p++;
x /= Prime[i];
}
nrFact *= (p + 1);
int a,b;
a = (pow(Prime[i],p+1) - 1) % MOD;
b = pow(Prime[i]-1, MOD-2) % MOD;
suma = (((suma*a)%MOD)*b)%MOD;
}
if (x > 1)
{
nrFact *= 2;
suma = (suma*(x+1)) % MOD;
}
fout<<nrFact<<' '<<suma<<endl;
}
int main()
{
Ciur();
fin>>t;
for(int i=0;i<t;i++)
{
Solve();
}
return 0;
}