Pagini recente » Clasament porc_log | Cod sursa (job #2563871) | Cod sursa (job #781160) | Cod sursa (job #3036766) | Cod sursa (job #1927945)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <bitset>
#include <vector>
#define NMAX 1000005
#define MOD 9973
using namespace std;
ifstream f ("ssnd.in");
ofstream g ("ssnd.out");
bitset < NMAX > b;
vector < int > P;
void ciur()
{
P.push_back(2);
for (int i = 3; i < NMAX; i++)
if (!b[i]) {
P.push_back(i);
for (int j = i + i; j < NMAX; j += i)
b[j] = 1;
}
}
int pow(int a, int p) {
int sol = 1;
a %= MOD;
while (p) {
if (p % 2) {
sol *= a;
sol %= MOD;
}
a *= a;
a %= MOD;
p /= 2;
}
return sol;
}
void solve()
{
long long n;
f>>n;
int nd = 1, sd = 1;
for (int i = 0; i < P.size() && 1LL * P[i] * P[i] <= n; i++) {
if (n % P[i]) continue;
int p = 0;
while (n % P[i] == 0) {
n /= P[i];
p++;
}
nd *= (p + 1);
int p1 = (pow(P[i], p + 1) - 1) % MOD;
int p2 = pow(P[i] - 1, MOD - 2) % MOD;
sd = (((sd * p1) % MOD) * p2) % MOD;
}
if (n > 1) {
nd *= 2;
sd = 1LL * sd * (n + 1);
sd %= MOD;
}
g<<nd<<' '<<sd<<'\n';
}
int main()
{
ciur();
int t;
f>>t;
while (t--)
solve();
return 0;
}