Pagini recente » Cod sursa (job #2987624) | Cod sursa (job #2726766) | Cod sursa (job #1440433) | Cod sursa (job #2189670) | Cod sursa (job #1838382)
#include <cstdio>
#define Q 1000 * 1000
#define M 9973
FILE *fin, *fout;
char ciur[Q + 1];
inline void ciuri() {
for(long long i = 2;i <= Q;i++)
if(ciur[i] == 0)
for(long long j = i * i;j <= Q;j += i)
ciur[j] = 1;
}
inline long long rid(long long n, long long a) {
long long p = 1;
while(a > 0) {
if(a % 2 == 1)
p *= n;
n *= n;
a >>=1;
}
return p;
}
inline long long sqrt(long long n) {
long long pas = 1 << 22;
long long r = 0;
while(pas) {
if((r + pas) * (r + pas) <= n)
r += pas;
pas >>=1;
}
return r;
}
inline void nrdiv(long long n) {
long long div = 2;
long long sq = sqrt(n);
long long p = 1, rez = 1;
while(div <= sq && n > 0) {
long long 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;
long long 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++;
}
rez = (rez + M) % M;
fprintf(fout, "%lld %lld\n", p, rez);
}
int main() {
fin = fopen("ssnd.in", "r");
fout = fopen("ssnd.out", "w");
long long n;
fscanf(fin, "%lld", &n);
for(long long i = 0;i < n;i++) {
long long nr;
fscanf(fin, "%lld", &nr);
nrdiv(nr);
}
fclose(fin);
fclose(fout);
return 0;
}