Pagini recente » Cod sursa (job #2727207) | Cod sursa (job #1476433) | Cod sursa (job #559581) | Cod sursa (job #1473588) | Cod sursa (job #1941378)
#include <bits/stdc++.h>
#define NMAX 1000005
#define MOD 9973
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
bitset < NMAX > B;
vector < int > V;
int POW(int N,int p){
int m = 1;
N = N % MOD;
while(p != 0){
if(p % 2 == 1){
m = m * N;
m = m % MOD;
}
p /= 2;
N = (N * N) % MOD;
}
return m;
}
void ciur(){
for(int i = 2; i < NMAX; i++){
if(B[i] == 0){
V.push_back(i);
for(int j = i + i; j < NMAX; j += i)
B[j] = 1;
}
}
}
inline void getans
(){
long long N;
int S = 1,D = 1,p,p1,p2;
fin >> N;
for(int i = 0; i < V.size() && N >= V[i] * V[i]; i++){
if(N % V[i] != 0) continue;
p = 0;
while(N % V[i] == 0){
N /= V[i];
p++;
}
D *= p + 1;
p1 = (POW(V[i],p + 1) - 1) % MOD;
p2 = POW(V[i] - 1,MOD - 2) % MOD;
S = (((S * p1) % MOD) * p2) % MOD;
}
if(N > 1){
D *= 2;
S = (1LL * S * (N + 1)) % MOD;
}
fout << D << " " << S << "\n";
}
int main()
{
ios :: sync_with_stdio(false);
int T;
ciur();
fin >> T;
while(T--){
getans();
}
// cout << "Hello world!" << endl;
return 0;
}