Pagini recente » Monitorul de evaluare | Cod sursa (job #511482) | Cod sursa (job #3367407) | Cod sursa (job #3365569) | Cod sursa (job #3367414)
#include <bits/stdc++.h>
#define mod 9973
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int t;
bitset <1000055> b;
int p[80000], k;
void Ciur(int n)
{
int i, j;
for(i = 4; i <= n; i += 2) b[i] = 1;
for(i = 3; i * i <= n; i += 2)
if(b[i] == 0)
for(j = i * i; j <= n; j += 2 * i)
b[j] = 1;
p[++k] = 2;
for(i = 3; i <= n; i += 2)
if(b[i] == 0)
p[++k] = i;
}
int FastExpo(long long a, int n)
{
int p = 1;
while(n > 0)
{
if(n % 2 == 1) p = p * a % mod;
a = a * a % mod;
n /= 2;
}
return p;
}
void Desc(long long n)
{
int i, e, f;
int nrdiv = 1, sumadiv = 1;
for(i = 1; 1LL * p[i] * p[i] <= n; i++)
{
e = 0; f = p[i];
while(n % f == 0)
{
e++;
n /= f;
}
if(e > 0)
{
nrdiv *= (e + 1);
sumadiv = sumadiv * (FastExpo(f, e + 1) - 1 + mod) % mod;
sumadiv = sumadiv * FastExpo(f - 1, mod - 2) % mod;
}
}
if(n > 1)
{
nrdiv *= 2;
sumadiv = sumadiv * (FastExpo(n, 2) - 1 + mod) % mod;
sumadiv = sumadiv * FastExpo(n - 1, mod - 2) % mod;
}
fout << nrdiv << " " << sumadiv << '\n';
}
int main()
{
int x;
Ciur(1000050);
fin >> t;
while(t--)
{
fin >> x;
Desc(x);
}
return 0;
}