Pagini recente » Cod sursa (job #2383738) | Cod sursa (job #575537) | Cod sursa (job #1464989) | Cod sursa (job #2149978) | Cod sursa (job #1759099)
#include <cstdio>
using namespace std;
const int nmx = 1000002;
const long long mod = 9973;
bool viz[nmx];
long long fct[80000];
void ciur()
{
fct[0] = 1;
fct[1] = 2;
for(int i = 3; i < nmx; i += 2)
if(not viz[i])
{
fct[++fct[0]] = i;
for(int j = 3 * i; j < nmx; j += 2 * i)
viz[j] = true;
}
}
void rezolvare(long long val)
{
long long cardinal = 1, suma = 1;
long long vala = val;
for(int i = 1; i <= fct[0] && fct[i] * fct[i] <= vala; ++i)
if(val % fct[i] == 0)
{
long long pt = 0;
while(val % fct[i] == 0)
{
++ pt;
val /= fct[i];
}
cardinal = (cardinal * (pt + 1)) % mod;
long long inm = 1, sum_p = 0;
for(int j = 0; j <= pt; ++j)
{
sum_p = (sum_p + inm) % mod;
inm = (1LL * inm * fct[i]) % mod;
}
suma = (1LL * suma * sum_p) % mod;
}
if(val > 1)
{
cardinal *= 2;
suma *= ((val * val - 1) / (val - 1)) % mod;
}
printf("%lld %lld\n", cardinal, suma);
}
void iterare_prin_teste()
{
int teste;
long long val;
scanf("%d", &teste);
for(int i = 1; i <= teste; ++i)
{
scanf("%lld", &val);
rezolvare(val);
}
}
int main()
{
freopen("ssnd.in", "r", stdin);
freopen("ssnd.out", "w", stdout);
ciur();
iterare_prin_teste();
return 0;
}