Pagini recente » Cod sursa (job #1702890) | Cod sursa (job #1944851) | Cod sursa (job #2703536) | Cod sursa (job #834330) | Cod sursa (job #2042585)
#include <bits/stdc++.h>
using namespace std;
const int MOD = 9973;
typedef long long LL;
int n;
bitset<1000005> not_prime;
vector<LL> primes;
void sieve() {
primes.push_back(2);
for(int i = 4; i <= 1000000; i += 2) {
not_prime[i] = 1;
}
for(int i = 3; i <= 1000000; i += 2) {
if(!not_prime[i]) {
for(int j = i << 1; j <= 1000000; j += (i << 1))
not_prime[j] = 1;
}
primes.push_back(i);
}
}
LL logPower(LL number, LL power) {
LL result = 1LL;
while(power) {
if(power & 1LL) {
result *= number;
}
number *= number;
power >>= 1LL;
}
return result;
}
void solve() {
scanf("%d ", &n);
while(n--) {
LL number;
scanf("%lld ", &number);
int divCount = 1, divSum = 1;
for(LL prime : primes) {
if(prime * prime > number)
break;
int power = 0;
while(number % prime == 0) {
power++;
number /= prime;
}
if(power != 0) {
divSum *= (logPower(prime, power + 1) - 1) / (prime - 1);
divSum %= MOD;
divCount *= (power + 1);
}
}
if(number != 1) {
divSum *= (logPower(number, 2) - 1) / (number - 1);
divSum %= MOD;
divCount *= 2;
}
printf("%d %d\n", divCount, divSum);
}
}
int main() {
freopen("ssnd.in", "r", stdin);
freopen("ssnd.out", "w", stdout);
sieve();
solve();
return 0;
}