Pagini recente » alexei1 | Cod sursa (job #2592946) | Cod sursa (job #583045) | Cod sursa (job #37340) | Cod sursa (job #3039294)
#include <bits/stdc++.h>
#define debug(x) cerr << #x << " " << x << "\n"
#define debugs(x) cerr << #x << " " << x << " "
#pragma GCC optimize("Ofast")
using namespace std;
typedef long long ll;
typedef pair <ll, ll> pii;
const ll NMAX = 1000001;
const ll INF = (1LL << 60);
const ll nrbits = 17;
const ll MOD = 9973;
bool ciur[NMAX];
ll primes[NMAX];
ll cc = 0;
ll pp[NMAX];
ll lgput(ll n, ll p) {
ll r = 1;
if(p == MOD - 2 && pp[n] != 0)
return pp[n];
while(p) {
if(p % 2) {
r *= n;
r %= MOD;
}
n *= n;
n %= MOD;
p /= 2;
}
if(MOD - 2 == p)
pp[n] = r;
return r;
}
int main() {
//#ifdef HOME
ifstream cin("ssnd.in");
ofstream cout("ssnd.out");
//#endif // HOME
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
ciur[1] = 1;
for(ll i = 2; i * i < NMAX; i++) {
if(ciur[i]) continue;
for(ll j = i * i; j < NMAX; j += i)
ciur[j] = 1;
}
for(ll i = 2; i < NMAX; i++) {
if(!ciur[i]) {
primes[++cc] = i;
}
}
ll n, i;
cin >> n;
for(i = 1; i <= n; i++) {
ll x;
cin >> x;
ll nr = 1;
ll sum = 1;
ll d = 1;
while(d <= cc && 1LL * primes[d] * primes[d] <= x) {
ll p = 0;
while(x % primes[d] == 0) {
p++;
x /= primes[d];
}
if(p > 0) {
nr *= (p + 1);
nr %= MOD;
sum *= (lgput(primes[d], p + 1) - 1 + MOD) % MOD;
sum %= MOD;
sum *= lgput(primes[d] - 1, MOD - 2);
sum %= MOD;
}
d++;
}
if(x > 1) {
ll p = 1;
nr *= 2;
nr %= MOD;
sum *= (lgput(x % MOD, p + 1) - 1 + MOD) % MOD;
sum %= MOD;
sum *= lgput((x - 1) % MOD, MOD - 2);
sum %= MOD;
}
cout << nr << " " << sum << "\n";
}
}