Pagini recente » Cod sursa (job #2952222) | Cod sursa (job #1500382) | Cod sursa (job #625209) | Cod sursa (job #2627888) | Cod sursa (job #1581803)
#include <cstdio>
using namespace std;
const int mxprim = 80000;
const int mxp10 = 1000000;
const int mod = 9973;
int n,prime[mxprim],nd,sd;
long long nr;
bool viz[mxp10+3];
void ciur() {
prime[++prime[0]] = 2;
for(int i = 3; i <= mxp10; i += 2)
if(not viz[i]) {
prime[++prime[0]] = i;
for(int j = i + i; j <= mxp10; j += i)
viz[j] = true;
}
}
int main() {
freopen("ssnd.in", "r", stdin);
freopen("ssnd.out", "w", stdout);
ciur();
scanf("%d", &n);
while(n--) {
nd = sd = 1;
scanf("%lld", &nr);
for(int i = 1; i <= prime[0] && 1LL * prime[i] * prime[i] <= nr; ++i)
if(nr % prime[i] == 0) {
int p = 0;
while(nr % prime[i] == 0){
++ p;
nr /= prime[i];
}
nd = (nd * (p + 1)) % mod;
int ad = 1, inm = 1;
for(int j = 1; j <= p; ++j){
inm = (1LL * inm * prime[i]) % mod;
ad += inm;
}
sd = (1LL * sd * ad) % mod;
}
if(nr > 1){
nd = (nd * 2) % mod;
/// why this?
sd = (1LL * sd * (nr + 1)) % mod;
}
printf("%d %d\n", nd, sd);
}
return 0;
}