Pagini recente » Cod sursa (job #519344) | Cod sursa (job #1841714) | Cod sursa (job #712464) | Cod sursa (job #2297140) | Cod sursa (job #2869058)
#include <fstream>
#include <bitset>
#include <vector>
using namespace std;
ifstream cin ("ssnd.in");
ofstream cout ("ssnd.out");
int n;
long long x;
const int MAX = 1e6 + 4;
const int MOD = 9973;
vector <int> p;
void ciur ()
{
bitset <MAX + 3> c;
for (int i = 3; i * i <= MAX; i += 2)
if (!c[i])
for (int j = i * i; j <= MAX; j += (i << 1))
c[j] = 1;
p.push_back(2);
for (int i = 3; i <= MAX; i += 2)
if (!c[i])
p.push_back(i);
}
int nr = 1;
int ssnd(long long n)
{
long long i = 0, sum = 1;
while (i < p.size() && p[i] * p[i] <= n)
{
if (!(n % p[i]))
{
long long e = 1, s = 1, s1 = 1;
while (!(n % p[i]))
{
e++;
s *= p[i];
s %= MOD;
s1 += s;
s1 %= MOD;
n /= p[i];
}
nr *= e;
sum *= s1;
sum %= MOD;
}
++i;
}
if (n > 1)
{
nr <<= 1;
sum *= (1 + n);
sum %= MOD;
}
return sum;
}
int main()
{
cin >> n;
ciur();
while (n--)
{
cin >> x;
int y = ssnd (x);
cout << nr << ' ' << y << '\n';
nr = 1;
}
}