Pagini recente » Cod sursa (job #1366676) | Cod sursa (job #2064257) | Cod sursa (job #742698) | Cod sursa (job #2592390) | Cod sursa (job #2720537)
#include <bits/stdc++.h>
#define MAXX (long long)1000000
#define mod 9973
using namespace std;
typedef long long ll;
const string FILENAME = "ssnd";
ifstream fin(FILENAME + ".in");
ofstream fout(FILENAME + ".out");
int t;
ll n;
bitset<MAXX + 1> c;
vector<ll> primes;
void ciur()
{
primes.push_back(2);
c[1] = c[0] = 1;
for(ll i = 4; i <= MAXX; i += 2)
c[i] = 1;
for(ll i = 3; i <= MAXX; i += 2)
if(c[i] == 0){
primes.push_back(i);
for(ll j = i * i; j <= MAXX; j += 2 * i)
c[j] = 1;
}
}
unsigned long long exp (unsigned long long a, unsigned long long n)
{
unsigned long long p = 1;
while(n)
{
if(n & 1)
p = p * a % mod;
a = a * a % mod;
n >>= 1;
}
return p;
}
void desc(ll n)
{
ll e, f;
ll ans1 = 1, ans2 = 1;
for(unsigned int i = 0; i < primes.size() && 1ull * primes[i] * primes[i] <= n; i++)
{
f = primes[i];
if(n % f == 0){
e = 0;
while(n % f == 0){
n /= f;
e++;
}
ans1 = ans1 * (e + 1);
ans2 = ans2 * ((exp(f, e + 1) - 1) % mod * exp(f - 1, mod - 2) % mod) % mod;
}
}
if(n > 1)
{
ans1 *= 2;
ans2 = ans2 * ((n * n - 1) % mod * exp(n - 1, mod - 2) % mod) % mod;
}
fout << ans1 << " " << ans2 << '\n';
}
int main()
{
ciur();
fin >> t;
while(t--)
{
fin >> n;
desc(n);
}
fin.close();
fout.close();
return 0;
}