Pagini recente » Cod sursa (job #2802292) | Cod sursa (job #3149333) | Cod sursa (job #219280) | Cod sursa (job #2572846) | Cod sursa (job #1029169)
#include <fstream>
#include <bitset>
using namespace std;
const int NMAX = 999984;
bitset <NMAX> prime;
int size, primes[78500], MOD = 9973, t;
long long N, totalSum, divisor;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
void getPrimes(){
primes[size++] = 2;
for (int i = 3; i < NMAX; i+=2)
if (prime[i] == 0){
primes[size++] = i;
for (int j = i * i ; j < NMAX; j+=2*i){
prime[j] = 1;
}
}
}
void solve(){
long long totalSum = 1;
int totalDiv = 1, power;
for (int i = 0; (1LL * primes[i] * primes[i] <= N) && (i < size); i++){
if (N % primes[i]) continue;
power = 0;
divisor = 1;
while (!(N % primes[i])){
power++;
N /= primes[i];
divisor*= primes[i];
}
totalSum*=(divisor * primes[i] - 1) / (primes[i] - 1) % MOD;
totalDiv*=(1 + power);
}
if (N > 1){
totalSum*=(1+N) % MOD;
totalDiv*=2;
}
g << totalDiv << " " << totalSum % MOD << "\n";
}
int main() {
getPrimes();
for (f >> t; t; t--){
f >> N;
solve();
}
return 0;
}