Pagini recente » Cod sursa (job #741064) | Cod sursa (job #1002963) | Cod sursa (job #3278972) | Cod sursa (job #1206404) | Cod sursa (job #2575150)
#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 < int > prime;
bool composite[N];
void ciur()
{
for(int i = 2; i <= 1e6; ++i) {
if(composite[i] == false) prime.push_back(i);
for(int j = 0; j < prime.size() && i * prime[j] <= 1e6; ++j) {
composite[i * prime[j]] = true;
if(i % prime[j] == 0) break;
}
}
}
long long pwr(long long a, long long b)
{
long long sol = a;
while(b > 0) sol = (sol * a) % mod, --b;
return sol;
}
int main()
{
usain_bolt();
ciur();
int tt;
fin >> tt;
for(; tt; --tt) {
long long n, sum_divs = 1;
int divs = 1;
fin >> n;
for(int i = 0; i < prime.size() && 1LL * prime[i] * prime[i] <= n; ++i) {
int e = 0;
if(n % (1LL * prime[i]) == 0) {
while(n % (1LL * prime[i]) == 0) n /= (1LL * prime[i]), ++e;
}
divs *= (e + 1);
if(e > 0) sum_divs = (sum_divs * (pwr(1LL * prime[i], 1LL * e) - 1LL) / (1LL * prime[i] - 1LL)) % mod;
}
if(n > 1) {
divs *= 2;
sum_divs = (sum_divs * (pwr(1LL * n, 1LL) - 1LL) / (n - 1LL)) % mod;
}
fout << divs << " " << sum_divs << "\n";
}
return 0;
}