Pagini recente » Cod sursa (job #2583346) | Cod sursa (job #939721) | Cod sursa (job #470643) | Cod sursa (job #2662852) | Cod sursa (job #1838369)
#include <cstdio>
#include <cmath>
#define Q 1000 * 1000
#define M 9973
FILE *fin, *fout;
char ciur[Q + 1];
inline void ciuri() {
for(int i = 2;i <= Q;i++)
if(ciur[i] == 0)
for(int j = i * i;j <= Q;j += i)
ciur[j] = 1;
}
inline int rid(int n, int a) {
int p = 1;
while(a > 0) {
if(a % 2 == 1)
p *= n, p %= M;
n *= n;
n %= M;
a >>=1;
}
return p;
}
inline void nrdiv(int n) {
int div = 2;
int sq = sqrt(n);
long long p = 1, rez = 1;
while(div <= sq && n > 0) {
int p1 = 0;
while(n % div == 0 && n > 0)
n /= div, p1++;
p *= (p1 + 1);
rez *= rid(div, p1 + 1) - 1;
rez /= (div - 1);
rez %= M;
div++;
}
if(n > 1) {
div = n;
int p1 = 0;
while(n % div == 0 && n > 0)
n /= div, p1++;
p *= (p1 + 1);
rez *= rid(div, p1 + 1) - 1;
rez /= (div - 1);
rez %= M;
div++;
}
fprintf(fout, "%lld %lld\n", p, rez);
}
int main() {
fin = fopen("ssnd.in", "r");
fout = fopen("ssnd.out", "w");
int n;
fscanf(fin, "%d", &n);
for(int i = 0;i < n;i++) {
int nr;
fscanf(fin, "%d", &nr);
nrdiv(nr);
}
fclose(fin);
fclose(fout);
return 0;
}