Pagini recente » Cod sursa (job #688628) | Cod sursa (job #1273490) | Cod sursa (job #2446852) | Cod sursa (job #782839) | Cod sursa (job #1060981)
#include<fstream>
#include<bitset>
#define Nmax 1000005
#define mod 9973
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
long p[Nmax];
long nrdiv = 1, j, i, sdiv, rez;
bitset<Nmax> viz;
void ciur()
{
long ii;
for (long i = 2; i < Nmax-2; ++i)
{
if (viz[i] == 0)
{
p[++j] = i;
for (ii = 2 * i; ii < Nmax; ii += i)
viz[ii] = 1;
}
}
}
void putere(long b, long e)
{
while (e)
{
if (e % 2 == 0)
{
b = (b*b)%mod;
e /= 2;
}
else
{
rez = (rez*b)%mod;
e--;
}
}
}
void euclid(int a, int b, int &x, int &y)
{
if (b == 0)
{
x = 1;
y = 0;
}
else
{
int x0, y0;
euclid(b, a%b, x0, y0);
x = y0;
y = (mod+x0 - (a / b)*y0)%mod;
}
}
int inv()
{
int x, y;
euclid(p[i] - 1, mod, x, y);
return x;
}
void div(long X)
{
int c=0;
nrdiv = 1;
sdiv = i=1;
while (X>1)
{
c = 0;
while (X%p[i] == 0)
{
c++;
X /= p[i];
}
if (c > 0)
{
rez = 1;
putere(p[i], c + 1);
rez--;
int d = inv();
sdiv = (sdiv*rez*d)%mod;
nrdiv *= (c + 1);
}
i++;
}
}
int main()
{
int T, N, k;
ciur();
fin >> T;
for (k = 1; k <= T; ++k)
{
fin >> N;
div(N);
fout << nrdiv << ' '<< sdiv<<'\n';
}
return 0;
}