Pagini recente » Cod sursa (job #2061463) | Cod sursa (job #2532119) | Cod sursa (job #3227063) | Cod sursa (job #2316329) | Cod sursa (job #2159291)
#include <fstream>
typedef unsigned long long ull;
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
const ull maxCiur = 1000000, MOD = 9973;
bool v[1000001];
ull n, h, x, nr, s, p[78498];
inline void ciur ()
{
ull i,j;
v[0] = v[1] = 1;
for ( i = 2; i < maxCiur; ++i )
if ( !v[i] )
{
p[h++] = i;
for ( j = i << 1; j <= maxCiur; j += i )
v[j] = 1;
}
}
inline ull logPow ( ull x, ull p )
{
ull i, sol = 1;
for ( i = 1; i <= p; i <<= 1 )
{
if ( i & p )
sol *= x, sol %= MOD;
x *= x, x %= MOD;
}
return sol;
}
inline void Div ( ull x, ull &nr, ull &s )
{
ull i,t;
nr = s = 1;
for ( i = 0; x > 1 && p[i] * p[i] <= x; ++i )
{
t = 0;
while ( x % p[i] == 0 )
x /= p[i], ++t;
nr *= t + 1;
s *= (logPow( p[i], t + 1 ) - 1) / (p[i] - 1), s %= MOD;
}
if ( x > 1 )
{
nr <<= 1;
s *= x * x / (x - 1), s %= MOD;
}
}
int main()
{
ios::sync_with_stdio (false);
ciur();
ull i;
//for ( i = 0; i < h; ++i )
// fout << p[i] << '\n';
fin >> n;
for ( i = 0; i < n; ++i )
{
fin >> x;
Div (x, nr, s);
fout << nr << " " << s << '\n';
}
}