Pagini recente » Cod sursa (job #2182106) | Cod sursa (job #75465) | Cod sursa (job #764733) | Cod sursa (job #3149286) | Cod sursa (job #1134400)
#include <cstdio>
#include <vector>
#define MOD 9973
using namespace std;
FILE * is = fopen("ssnd.in", "r");
FILE * os = fopen("ssnd.out", "w");
int n, x;
int div, sdiv;
void SOLVE();
int POW(int k, int q);
int main()
{
fscanf(is, "%d", &n);
while ( n-- )
{
fscanf(is, "%d", &x);
SOLVE();
}
fclose(is);
fclose(os);
return 0;
}
void SOLVE()
{
vector<int> p, d;
int pt = 3;
if ( x % 2 == 0 )
{
p.push_back(2);
d.push_back(1);
x /= 2;
while ( x % 2 == 0 )
{
++d[0];
x /= 2;
}
}
while ( x != 1 )
{
if ( x % pt == 0 )
{
p.push_back(pt);
d.push_back(1);
x /= pt;
while ( x % pt == 0 )
{
++d[d.size()];
x /= pt;
}
}
pt += 2;
}
//for ( size_t i = 0; i < p.size(); ++i )
//fprintf(os, "%d %d\n", p[i], d[i]);
div = 1;
sdiv = 1;
while(p.size())
{
div *= (d.back() + 1);
sdiv = ( sdiv * ( ( POW(p.back(), d.back() + 1) - 1 ) % MOD ) ) % MOD;
sdiv /= p.back() - 1;
p.pop_back();
d.pop_back();
}
fprintf(os, "%d %d\n", div, sdiv);
}
int POW(int k, int q)
{
int r;
if (q == 1)
return k;
r = ( POW(k, q / 2) % MOD);
r = ( r * r ) % MOD;
if ( q % 2 == 1 )
r *= k;
return r;
}