Pagini recente » Cod sursa (job #2228528) | Cod sursa (job #2015178) | Cod sursa (job #90263) | Cod sursa (job #25546) | Cod sursa (job #2015508)
#include <bits/stdc++.h>
using namespace std;
FILE *F=fopen("ssnd.in", "r"), *G=fopen("ssnd.out", "w");
int t, p[1000005], k, j, e, c[1000005];
long long x, nrd, s;
const int n = 1000002;
const int MOD = 9973;
long long put(long long x, int e)
{
long long rez = 1;
for(int i = 1; i <= e; ++i)
rez *= x;
return rez;
}
int main()
{
fscanf(F, "%d ", &t);
for(int i = 2; i<= n; ++ i)
if(!c[i])
{
p[++k] = i;
for(int j = i+i; j <= n; j += i) c[j] = 1;
}
while(t--)
{
fscanf(F, "%lld ", &x);
if(x == 1)
{
fprintf(G, "1 1\n");
continue;
}
j = 1; nrd = 1; s = 1;
while(1LL*p[j]*p[j]<=x)
{
e = 0;
while(x %p[j] == 0)
x /= p[j], e++;
if(e)
{
nrd *= (e+1);
s = (s*(put(p[j], e+1)-1)/(p[j]-1))%MOD;
}
j++;
}
if(x > 1)
nrd*=2, s = (s*(put(x, 2)-1)/(x-1))%MOD;
fprintf(G, "%lld %lld\n", nrd, s);
}
return 0;
}