Pagini recente » Cod sursa (job #1435926) | Cod sursa (job #2935219) | Cod sursa (job #2049374) | Cod sursa (job #437100) | Cod sursa (job #2376219)
#include <fstream>
#define MOD 9973
#define MAX 1000001
std::ifstream fin("ssnd.in");
std::ofstream fout("ssnd.out");
int t;
int64_t n;
int nrPrimes;
int primes[MAX];
bool sieve[MAX];
int pow(int x, int n) {
if (!n)
return 1;
if (n & 1)
return pow(x * x % MOD, n >> 1) * x % MOD;
return pow(x * x % MOD, n >> 1) % MOD;
}
int modInv(int x) {
return pow(x, MOD - 2);
}
int main() {
for (int i = 2; i * i < MAX; i++)
if (!sieve[i])
for (int j = i * i; j < MAX; j += i)
sieve[j] = true;
for (int i = 2; i < MAX; i++)
if (!sieve[i])
primes[nrPrimes++] = i;
fin >> t;
while (t--) {
fin >> n;
int num = 1, sum = 1;
for (int i = 0; 1LL * primes[i] * primes[i] <= n; i++)
if (n % primes[i] == 0) {
int exp = 0;
while (n % primes[i] == 0) {
exp++;
n /= primes[i];
}
num = num * (exp + 1) % MOD;
sum = sum * (pow(primes[i], (exp + 1)) - 1) % MOD * modInv(primes[i] - 1) % MOD;
}
if (n > 1) {
num = num * 2 % MOD;
sum = sum * (n * n % MOD - 1) % MOD * modInv(n - 1) % MOD;
}
fout << num << ' ' << sum << '\n';
}
fout.close();
return 0;
}