Pagini recente » Cod sursa (job #3253196) | Cod sursa (job #1638505) | Cod sursa (job #1366727) | Cod sursa (job #2754160) | Cod sursa (job #2776060)
#include <bits/stdc++.h>
#define mod 9973
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
void usain_bolt()
{
ios::sync_with_stdio(false);
fin.tie(0);
}
const int N = 1e6 + 5;
vector < long long > prime;
vector < bool > isprime(N, true);
void Ciur()
{
for(long long i = 2; i < N; ++i) {
if(isprime[i] == true) {
prime.push_back(i);
for(int j = 0; j < (int) prime.size() && prime[j] * i < N; ++j) {
isprime[prime[j] * i] = false;
if(i % prime[j] == 0) {
break;
}
}
}
}
}
long long lgput(long long a, long long b)
{
long long ans = 1;
while(b > 0) {
if(b & 1) {
ans = (ans * a);
}
a = (a * a);
b >>= 1;
}
return ans;
}
int main()
{
usain_bolt();
int n;
Ciur();
fin >> n;
for(int i = 1; i <= n; ++i) {
long long x;
fin >> x;
long long divs = 1;
long long sol = 1;
for(int j = 0; prime[j] * prime[j] <= x; ++j) {
long long d = prime[j];
if(x % d == 0) {
long long e = 0;
while(x % d == 0) {
x /= d;
++e;
}
long long ans = ((lgput(d, e + 1) - 1) / (d - 1));
sol = (sol * ans) % mod;
divs *= (e + 1);
}
}
if(x > 1) {
divs *= 2LL;
long long ans = (lgput(x, 2LL) - 1) / (x - 1);
sol = (sol * ans) % mod;
}
fout << divs << " " << sol << "\n";
}
return 0;
}