Pagini recente » Cod sursa (job #1537381) | Cod sursa (job #1494992) | Cod sursa (job #1449722) | Cod sursa (job #2217126) | Cod sursa (job #2582538)
#include <bits/stdc++.h>
#define MOD 9973
#define MAX 1000000 + 5
using namespace std;
bool ciur[MAX];
vector<int>prime;
void Ciur()
{
for(int i = 2; i * i <= MAX; i++)
if(!ciur[i])
for(int j = i * i; j <= MAX; j += i)
ciur[j] = 1;
for(int i = 2; i <= MAX; i++)
if(!ciur[i])prime.push_back(i);
}
long long ridicare(long long baza, long long exponent)
{
long long putere = 1;
while(exponent)
{
if(exponent % 2)putere *= baza;
baza *= baza;
exponent /= 2;
}
return putere;
}
int main()
{
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
ios::sync_with_stdio(false);
fin.tie(0);
fout.tie(0);
srand(time(NULL));
Ciur();
int t;
fin >> t;
for(int i = 1; i <= t; i++)
{
long long n;
fin >> n;
long long d = 0, nrDiv = 1, sumaDiv = 1;
while(prime[d] * prime[d] <= n)
{
if(n % prime[d] == 0)
{
int nrAp = 0;
while(n % prime[d] == 0)
{
nrAp++;
n /= prime[d];
}
nrDiv *= (nrAp + 1);
sumaDiv *= ((ridicare(prime[d], nrAp + 1) - 1) / (prime[d] - 1));
sumaDiv %= MOD;
}
d++;
}
if(n > 1)
{
nrDiv *= 2;
sumaDiv *= (n * n - 1) / (n - 1);
sumaDiv %= MOD;
}
fout << nrDiv << " " << sumaDiv << '\n';
}
fin.close();
fout.close();
return 0;
}