Pagini recente » Cod sursa (job #2973111) | Cod sursa (job #677960) | Cod sursa (job #3289411) | Cod sursa (job #2120130) | Cod sursa (job #1759074)
#include <cstdio>
using namespace std;
const int nmx = 1000002;
const int mod = 9973;
bool viz[nmx];
int 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(int val)
{
int cardinal = 1, suma = 1;
for(int i = 1; i <= fct[0] && fct[i] <= val; ++i)
if(val % fct[i] == 0)
{
int pt = 0;
while(val % fct[i] == 0)
{
++ pt;
val /= fct[i];
}
cardinal = (cardinal * (pt + 1)) % mod;
int inm = 1, sum_p = 0;
for(int j = 0; j <= pt; ++j)
{
sum_p = (sum_p + inm) % mod;
inm = (inm * fct[i]) % mod;
}
suma = (suma * sum_p) % mod;
}
if(val > 1)
{
cardinal *= 2;
suma *= (1LL * val * val - 1) % mod;
}
printf("%d %d\n", cardinal, suma);
}
void iterare_prin_teste()
{
int teste, val;
scanf("%d", &teste);
for(int i = 1; i <= teste; ++i)
{
scanf("%d", &val);
rezolvare(val);
}
}
int main()
{
freopen("ssnd.in", "r", stdin);
freopen("ssnd.out", "w", stdout);
ciur();
iterare_prin_teste();
return 0;
}