Pagini recente » Cod sursa (job #1246921) | Cod sursa (job #3187300) | Cod sursa (job #2679136) | Cod sursa (job #1466034) | Cod sursa (job #710521)
Cod sursa(job #710521)
#include <stdio.h>
#include <string.h>
#define MOD 9973
int p[1000000];
int d[1000000];
int ndiv;
void prime_factors(long n) {
int aux = 2;
while (n > 1) {
if (n % aux == 0) {
p[ndiv] = aux;
d[ndiv]++;
n /= aux;
}
else {
if (d[ndiv] > 0)
ndiv++;
aux++;
}
}
if (d[ndiv] > 0)
ndiv++;
}
int putere(int p, int d) {
int i, x = 1;
for (i=0;(1<<i)<=d;i++) {
if (((1 << i) & d)) {
x = (x * p) % MOD;
}
p = (p * p) % MOD;
}
return x;
}
int main(int argc, char **argv) {
int m;
freopen("ssnd.in", "r", stdin);
//freopen("ssnd.out", "w", stdout);
memset(d, 0, sizeof(d));
ndiv = 0;
scanf("%d", &m);
int j, n;
for (j = 0; j < m; j++) {
scanf("%d", &n);
ndiv = 0;
prime_factors(n);
long ndivs = 1, sums = 1;
//printf("ndiv = %d\n", ndiv);
//for (i=0;i<ndiv;i++) {
// printf("%d %d\n", d[i], p[i]);
//}
int i;
for (i=0;i<ndiv;i++) {
ndivs = (ndivs * 1LL * (d[i] + 1)) % MOD;
sums = (sums * 1LL * ((putere(p[i], d[i] + 1) - 1) / (p[i] - 1))) % MOD;
p[i] = d[i] = 0;
}
printf("%ld %ld\n", ndivs, sums);
}
return 0;
}