Pagini recente » Cod sursa (job #1183304) | Cod sursa (job #437328) | Cod sursa (job #413805) | Cod sursa (job #3228911) | Cod sursa (job #3227369)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
bool ciur[1000005];
void seteaza()
{
ciur[0] = true; ciur[1] = true;
for(long long i = 2; i*i <= 1000000; i++)
if(ciur[i] == false)
for(long long j = 2; j*i <= 1000000; j++)
ciur[i*j] = true;
}
long long putere(long long x, long long y)
{
long long p = 1;
while(y)
{
if(y % 2)
p *= x%9973;
x *= x%9973;
y /= 2;
}
return p;
}
void ssnd(long long n)
{
long long nrdiv = 1, sumdiv = 1;
if(ciur[n])
{
for(long long i = 2; i*i <= n; i++)
if(!ciur[i] && n % i == 0)
{
long long p = 0, cn = n;
while(cn % i == 0)
{
p++;
cn /= i;
}
nrdiv *= (p + 1);
sumdiv *= ((putere(i, p + 1)%9973 - 1)/(i - 1))%9973;
}
}
else
{
nrdiv = 2;
sumdiv = (1 + n)%9973;
}
g << nrdiv << ' ' << sumdiv << '\n';
}
int main()
{
long long t;
f >> t;
seteaza();
while(t)
{
long long n;
f >> n;
ssnd(n);
t--;
}
return 0;
}