Pagini recente » Cod sursa (job #2544155) | Cod sursa (job #1301515) | Cod sursa (job #2706794) | Cod sursa (job #2114651) | Cod sursa (job #1231347)
#include <fstream>
#include <cmath>
#define M 9973
using namespace std;
int factors(long long & n, long long p)
{
int d = 0;
while (n > 1 && ((n % p) == 0))
{
++d;
n /= p;
}
return d;
}
long long pow(long long x, long long n)
{
if (n == 0) return 1L;
if (n == 1) return x;
if ((n % 2) == 0) return pow(x*x, n/2);
else return x * pow(x*x, n/2);
}
int main()
{
ifstream ifs("ssnd.in");
ofstream ofs("ssnd.out");
int t;
ifs >> t;
for (int i = 0; i < t; ++i)
{
long long n;
ifs >> n;
long long sqrt_n = sqrt(n);
long long card = 1;
long long sum = 1;
for (long long p = 2; p <= sqrt_n; ++p)
{
long long d = factors(n, p);
if (d > 0)
{
// Update the number of divisors
card *= (d + 1);
// Update the sum
long long f = ( (pow(p, d + 1) - 1) / (p - 1) ) % M;
sum = sum * f % M;
}
}
if (n > 1)
{
long long d = 1;
// Update the number of divisors
card *= (d + 1);
// Update the sum
long long f = ( (pow(n, d + 1) - 1) / (n - 1) ) % M;
sum = sum * f % M;
}
ofs << card << " " << sum << "\n";
}
return 0;
}