Pagini recente » Cod sursa (job #1917076) | Monitorul de evaluare | Istoria paginii runda/baraj_liceu_2014-2019 | Cod sursa (job #1998051) | Cod sursa (job #2073175)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("ssnd.in");
ofstream cout("ssnd.out");
const int MAX_PR = 78520;
const int MAX = 1e6 + 27;
const int MOD = 9973;
void Init(vector < long long > &prime) {
int index = 0;
vector < bool > used (MAX);
for (int i = 2; i < MAX; i ++) {
if (used[i]) {
continue;
}
prime[++ index] = 1ll * i;
for (int j = i + i; j < MAX; j += i) {
used[j] = true;
}
}
}
void Print_ssnd(long long n, vector < long long > &prime) {
long long d = 1, s = 1;
for (int i = 1; 1ll * prime[i] * prime[i] <= n; i ++) {
if (n % prime[i]) {
continue;
}
long long cur_exp = 0;
long long cur_nr = 1;
while (n % prime[i] == 0) {
n /= prime[i];
cur_exp ++;
cur_nr *= 1ll * prime[i];
}
d *= (cur_exp + 1);
d %= MOD;
s *= ((cur_nr * prime[i] - 1) / (prime[i] - 1));
s %= MOD;
}
if (n != 1) {
d *= 2;
d %= MOD;
s *= (n + 1);
s %= MOD;
}
cout << d << ' ' << s << '\n';
}
int main(int argc, char const *argv[]) {
vector < long long > prime(MAX);
Init(prime);
int t;
cin >> t;
while (t --) {
long long n;
cin >> n;
Print_ssnd(n, prime);
}
}