Pagini recente » Cod sursa (job #2907982) | Cod sursa (job #1557734) | Cod sursa (job #33032) | Cod sursa (job #1607226) | Cod sursa (job #1753970)
#include <bits/stdc++.h>
#define MOD 9973
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
long long prime[200000], k;
long long t[1000005];
long long f[20], expo[20], nrf;
int Putere(long long a, long long n)
{
long long p = 1;
while(n > 0)
{
if(n % 2 == 1)
{
p = (1LL * p * a) % MOD;
n--;
}
n /= 2;
a = (1LL * a * a) % MOD;
}
return p;
}
void Ciur()
{
long long i, j;
prime[++k] = 2;
for (i = 3; i * i <= 1000000; i += 2)
if (t[i] == false)
{
prime[++k] = i;
for (j = i * i; j <= 1000000; j = j + 2 * i)
t[j] = true;
}
}
void Solve(long long n)
{
long long nrd, i, d, e;
nrf = 0;
nrd = i = 1;
d = 2;
while( n > 1 && d * d <= n && i <= k)
{
if( n % d == 0 )
{
f[++nrf] = d;
e = 0;
while(n % d == 0)
{
e++;
n /= d;
}
nrd = 1LL * nrd * (e + 1) % MOD;
expo[nrf] = (e + 1);
}
d = prime[++i];
}
if( n > 1 )
{
f[++nrf] = n;
nrd *= 2;
expo[nrf] = 2;
}
long long sd, x;
sd = 1;
for(i = 1; i <= nrf; i++)
{
x = (Putere(f[i], expo[i]) - 1) % MOD;
if(x == -1) x = 9972;
x = 1LL * x * Putere(f[i] - 1, MOD - 2) % MOD;
sd = 1LL * sd * x % MOD;
}
fout << nrd << " " << sd << "\n";
}
void Read()
{
long long i, test;
long long x;
fin >> test;
for(i = 1; i <= test; i++)
{
fin >> x;
Solve(x);
}
fin.close();
}
int main()
{
Ciur();
Read();
return 0;
}