Pagini recente » Cod sursa (job #3361125) | Cod sursa (job #3362245) | Cod sursa (job #3361126) | Cod sursa (job #3361226) | Cod sursa (job #3361784)
#include <bits/stdc++.h>
using namespace std;
vector<pair<int, int>> factorize(int x, const vector<int>& spf)
{
vector<pair<int, int>> factors;
while (x > 1)
{
int p = spf[x];
int exponent = 0;
while (x % p == 0)
{
x /= p;
++exponent;
}
factors.push_back({p, exponent});
}
return factors;
}
int MAX_N = 1000005;
int main()
{
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int N;
fin>>N;
vector<int> spf(MAX_N + 1);
for (int p = 2; p <= MAX_N; ++p)
{
if (spf[p] == 0)
{
spf[p] = p;
if (1LL * p * p <= MAX_N)
{
for (long long multiple = 1LL * p * p; multiple <= MAX_N; multiple += p)
{
if (spf[multiple] == 0)
{
spf[multiple] = p;
}
}
}
}
}
while(N--)
{
int t;
fin>>t;
int nd = 1, sd = 1;
auto divizori = factorize(t, spf);
const int MOD = 9973;
for (auto div : divizori)
{
nd = (1LL * nd * (div.second + 1)) % MOD;
long long sumaFactor = 1;
long long putere = 1;
for (int i = 1; i <= div.second; i++)
{
putere = (putere * div.first) % MOD;
sumaFactor = (sumaFactor + putere) % MOD;
}
sd = (1LL * sd * sumaFactor) % MOD;
}
fout<<nd<<" "<<sd<<endl;
}
return 0;
}