Pagini recente » Cod sursa (job #621792) | Cod sursa (job #2194312) | Cod sursa (job #2580013) | Cod sursa (job #2842430) | Cod sursa (job #2735650)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
long long n, t, d, ndiv, sdiv, i, j, P[1000006], nprim;
bool ciur[1000006];
long long expsqr(long long n, long long p)
{
if (p == 0) return 1;
else if (p == 1) return n;
else if (p % 2 == 0) return (expsqr(n*n, p/2));
else if (p % 2 == 1) return (n*expsqr(n*n, (p-1)/2));
}
int main()
{
ciur[0] = 1;
ciur[1] = 1;
for (i = 2; i < 1000005; i++)
{
if (ciur[i] == 0)
{
++nprim;
P[nprim] = i;
for (j = 2*i; j < 1000005; j+=i)
ciur[j] = 1;
}
}
fin >> t;
for (i = 1; i <= t; i++)
{
fin >> n;
long long N = n;
ndiv = 1; sdiv = 1;
for (j = 1; j <= nprim && P[j]*P[j] <= N; j++)
{
if (N % P[j] == 0)
{
d = 0;
while (N%P[j] == 0)
{
d++;
N/=P[j];
}
ndiv *= (d+1);
int p1 = (expsqr(P[j], d+1) - 1);
int p2 = (P[j]-1);
sdiv = (((sdiv*p1))/p2)%9973;
}
}
if (N > 1)
{
ndiv *= 2;
sdiv = (sdiv*(N+1)%9973);
}
fout << ndiv << " " << sdiv << "\n";
}
return 0;
}