Pagini recente » Monitorul de evaluare | Cod sursa (job #1241298) | Istoria paginii runda/testround3b/clasament | Monitorul de evaluare | Cod sursa (job #1220519)
#include <iostream>
#include <cstdio>
#include <vector>
#include <stack>
#include <queue>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <fstream>
#include <map>
using namespace std;
#define MAX 1000001
bool p[MAX];
vector<long long>pr;
void ciur() {
int i = 2;
while (i <= 1000) {
while (p[i])i++;
for (int j = i*i; j < MAX; j += i) p[j] = 1;
i++;
}
for (int i = 2; i < MAX; i++)
if (!p[i]) pr.push_back(i);
}
void desc(long long n) {
long long s = 1, s1, d = 1, d1;
int i = 0;
while (i < pr.size() && pr[i] * pr[i] <= n) {
if (n % pr[i] == 0) {
s1 = pr[i];
d1 = 1;
while (n % pr[i] == 0) {
s1 *= pr[i];
d1++;
n /= pr[i];
}
s = (s * (s1-1) / (pr[i]-1)) % 9973;
d *= d1;
}
i++;
}
if (n != 1) {
s = (s * (n*n-1)/(n-1)) % 9973;
d *= 2;
}
cout << d << " " << s << "\n";
}
long long n;
int t;
int main() {
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
ciur();
cin >> t;
while(t--) {
cin >> n;
desc(n);
}
return 0;
}