Pagini recente » Cod sursa (job #2771486) | Cod sursa (job #1015654) | Cod sursa (job #2551739) | Cod sursa (job #550429) | Cod sursa (job #3168324)
#include <iostream>
#include <vector>
using namespace std;
const int MOD = 9973;
const long long NMAX = 1000000000000;
const long long SQRT_NMAX = 1e6;
bool notprime[SQRT_NMAX + 1];
vector<int> primes;
int main()
{
FILE *fin, *fout;
fin = fopen("ssnd.in", "r");
fout = fopen("ssnd.out", "w");
long long t, n, i, j;
for (i = 2; i * i <= NMAX; i++)
if (!notprime[i]) {
primes.push_back(i);
for (j = i * i; j <= SQRT_NMAX; j += i)
notprime[j] = true;
}
fscanf(fin, "%lld", &t);
while(t--) {
fscanf(fin, "%lld", &n);
long long nr_div = 1;
long long sum_div = 1;
for (i = 0; i < (int)primes.size() && primes[i] * primes[i] <= n; i++) {
long long sum_pow = 1, base = 1, power = 0;
while (n % primes[i] == 0) {
base *= primes[i];
power++;
sum_pow = sum_pow + base;
n /= primes[i];
}
sum_div = (sum_div * sum_pow) % MOD;
nr_div = nr_div * (power + 1);
}
if (n > 1) {
nr_div = nr_div * 2;
sum_div = (sum_div * (1 + n)) % MOD;
}
fprintf(fout, "%lld %lld\n", nr_div, sum_div);
}
fclose(fin);
fclose(fout);
return 0;
}