Pagini recente » Cod sursa (job #2396851) | Cod sursa (job #1894437) | Cod sursa (job #2696539) | Cod sursa (job #3338113) | Cod sursa (job #1609382)
#include <stdio.h>
#define IN "ssnd.in"
#define OUT "ssnd.out"
#define MAXN 1000001
#define MOD 9973
int k = 0, prime [MAXN + 5];
void eratosthenes (void) {
int i, j;
char seen[MAXN + 5];
prime [++ k] = 2;
for (i = 3; i <= MAXN; i += 2)
if (seen [i] != 1){
seen [i] = 1;
prime [++ k] = i;
for (j = i + i; j <= MAXN; j += i)
seen [j] = 1;
}
}
inline long long power (int aa, int bb){
long long rez = 1, a = 1LL * aa, b = 1LL * bb;
while (b){
if (b % 2)
rez = rez * a,
-- b;
else
a = a * a,
b = b / 2;
}
return rez;
}
inline void solve (long long nr){
int i, c, counter = 1;
long long sum = 1, p;
for (i = 1; 1LL * prime[i] * prime[i] <= nr; ++ i){
if (nr % prime[i] == 0){
c = 0;
while (nr % prime[i] == 0){
++ c;
nr /= prime[i];
}
counter = counter * (c + 1);
p = power (1LL * prime[i], c + 1);
sum *= (p - 1) / (prime[i] - 1) % MOD;
}
}
if (nr > 1)
counter *= 2,
sum = (sum * ((nr * nr - 1) / (nr - 1)) % MOD) % MOD;
printf ("%d %lld\n", counter, sum % MOD);
}
int main(void) {
freopen (IN, "r", stdin);
freopen (OUT, "w", stdout);
eratosthenes();
int t;
long long nr;
scanf ("%d", &t);
while (t){
scanf ("%lld", &nr);
solve (nr);
--t;
}
fclose (stdin);
fclose (stdout);
return 0;
}