Pagini recente » Cod sursa (job #1778426) | Cod sursa (job #2469827) | Cod sursa (job #1122548) | Cod sursa (job #2469825) | Cod sursa (job #1607654)
#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;
}
}
int power0 (int a, int b){
if (b == 0)
return 1;
if (b % 2)
return a * power (a * a, b / 2);
else
return power (a * a, b / 2);
}
int power (int a, int b){
int auxA = a;
while (b > 1){
if (b % 2 == 0)
a = a * a;
else
a = a * a * auxA;
b /= 2;
}
return a;
}
inline void solve (long long nr){
int i, c, counter = 1, sum = 1, p;
long long auxNr = nr;
for (i = 1; i <= k && prime[i] * prime[i] <= auxNr; ++ i){
if (nr % prime[i] == 0){
c = 0;
while (nr % prime[i] == 0){
++ c;
nr /= prime[i];
}
counter = (counter * ((c + 1) % MOD)) % MOD;
p = (power (prime[i], c + 1) - 1) / (prime[i] - 1);
sum = (sum * p % MOD) % MOD;
}
}
if (nr > 1)
counter *= 2,
sum = (sum * ((nr * nr - 1) / (nr - 1)) % MOD) % MOD;
printf ("%d %d", counter, sum);
printf ("\n");
}
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;
}