Pagini recente » Cod sursa (job #20834) | Cod sursa (job #748438) | Cod sursa (job #1876660) | Cod sursa (job #44448) | Cod sursa (job #2719036)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
const int mod = 9973;
const long long NMax = 1e12, PrimeNrMax = 1e6;
vector <int> primenrs;
int t;
long long n, nr, sum;
bool e[PrimeNrMax + 5];
void Eratosthene(){
for (int i = 2; i <= PrimeNrMax; i++)
if (!e[i]){
for (int j = i * 2; j <= PrimeNrMax; j += i)
e[j] = 1;
primenrs.push_back(i);
}
}
void Read(){
fin >> n;
nr = sum = 1;
}
long long LgPow(long long x, int p){
x %= mod;
long long aux = x, ans = 1;
while (p){
if (p % 2)
ans = ans * aux % mod;
aux = aux * aux % mod;
p /= 2;
}
return ans;
}
void Divisors(long long x){
for (auto i : primenrs){
if (i * i > x)
break;
int p = 0;
while (!(x % i)){
p++;
x /= i;
}
if (!p)
continue;
nr = nr * (p + 1);
sum = sum * (LgPow(i, p + 1) - 1 + mod) * LgPow(i - 1, mod - 2) % mod;
}
if (x != 1){
nr = nr * 2;
sum = sum * (LgPow(x, 2) - 1 + mod) * LgPow(x - 1, mod - 2) % mod;
}
}
void Print(){
fout << nr << ' ' << sum << '\n';
}
int main(){
Eratosthene();
fin >> t;
while (t--){
Read();
Divisors(n);
Print();
}
return 0;
}