Pagini recente » Cod sursa (job #1096943) | Cod sursa (job #1769995) | Cod sursa (job #1007629) | Cod sursa (job #1997161) | Cod sursa (job #2098337)
#include <bits/stdc++.h>
#define mod 9973
#define ll long long
#define N 1000002
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
int t, sum1, sum2, nr, cnt;
ll x;
vector <ll> primes;
bool viz[1000100];
void add(int &n, int val){
n = (n + val) % mod;
}
void mul(int &n, int val){
n = (n * val) % mod;
}
void precalc(){
for(int i = 2; i <= N; i++)
if(!viz[i]){
primes.push_back(i);
for(int j = i + i; j <= N; j += i)
viz[j] = 1;
}
}
int lgput(int a, int p){
a %= mod;
int rs = 1;
while(p){
if(p & 1)
mul(rs, a);
mul(a, a);
p /= 2;
}
return rs;
}
void solve(){
in >> x;
sum1 = sum2 = nr = 1;
ll xx = x, n = 0;
for(auto i : primes){
if(i > x)
break;
cnt = 0;
while(x % i == 0 || x == i)
cnt++, x /= i;
if(cnt){
n++;
mul(nr, cnt + 1);
mul(sum1, lgput(i, cnt + 1) - 1);
mul(sum2, i - 1);
}
}
if(n == 0 || (x >= N)){
mul(nr, 2);
mul(sum1, lgput(x, 2) - 1);
mul(sum2, x - 1);
}
mul(sum1, lgput(sum2, mod - 2));
out << nr << ' ' << sum1 << '\n';
}
int main(){
in >> t;
precalc();
while(t--)
solve();
return 0;
}