Pagini recente » Cod sursa (job #2870154) | Cod sursa (job #2343032) | Cod sursa (job #903423) | Cod sursa (job #2640847) | Cod sursa (job #3214195)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
const int RAD = 1e6;
const int MOD = 9973;
vector <int> prime;
bool c[RAD + 1] = {0};
void ciur()
{
for(int i = 2; i * i <= RAD; i++)
{
if(c[i] == 0)
{
for(int d = i * i; d <= RAD; d += i) c[d] = 1;
}
}
for(int i = 2; i <= RAD; i++)
{
if(c[i] == 0) prime.push_back(i);
}
}
long long putere(long long b, long long e)
{
long long rez = 1;
while(e != 0)
{
if(e % 2 == 1)
{
rez *= b;
}
b *= b;
e /= 2;
}
return rez;
}
void sum_nr_div(long long n, int &nrdiv, int &sumdiv)
{
int nr_prime = prime.size();
int i = 0;
long long nr = 1;
long long sum = 1;
while(i < nr_prime && (long long)prime[i] * prime[i] <= n)
{
if(n % prime[i] == 0)
{
int put = 0;
while(n % prime[i] == 0)
{
put++;
n /= prime[i];
}
nr *= (put + 1);
sum *= ((putere(prime[i], put + 1) - 1) / (prime[i] - 1));
}
i++;
}
if(n != 1)
{
nr *= 2;
sum *= (n + 1);
}
nrdiv = nr % MOD;
sumdiv = sum % MOD;
}
int main()
{
ciur();
int t;
fin >> t;
for(int i = 0; i < t; i++)
{
long long n;
fin >> n;
int nr_div;
int sumdiv;
sum_nr_div(n, nr_div, sumdiv);
fout << nr_div << " " << sumdiv << "\n";
}
fin.close();
fout.close();
return 0;
}