Pagini recente » Cod sursa (job #2541192) | Istoria paginii runda/road_to_ioi_1 | Cod sursa (job #1662314) | Cod sursa (job #2631719) | Cod sursa (job #1025964)
#include <fstream>
#include <iostream>
#include <cmath>
using namespace std;
const int NMAX = 999999;
int prime[NMAX], size, primes[NMAX], MOD = 9973, t;
long long N;
long long totalSum, div;
int power, totalDiv;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
void getPrimes(){
for (int i = 4; i < NMAX; i+=2)
prime[i] = 1;
primes[size++] = 2;
for (int i = 3; i < NMAX; i+=2)
if (prime[i] == 0){
primes[size++] = i;
for (int j = 2 * i ; j < NMAX; j+=i){
prime[j] = 1;
}
}
}
void solve(long long N){
totalSum = 1;
totalDiv = 1;
for (int i = 0; (1LL * primes[i] * primes[i] <= N) && (i < size); i++){
if (N % primes[i] != 0) continue;
power = 0;
div = 1;
while (!(N % primes[i])){
power++;
N /= primes[i];
div*= primes[i];
}
totalSum*=(div * 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(N);
}
f.close();
g.close();
return 0;
}