Pagini recente » Cod sursa (job #872836) | Cod sursa (job #368766) | Cod sursa (job #1645350) | Cod sursa (job #648085) | Cod sursa (job #2159872)
#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 sol = 1;
for ( x %= MOD; p; p >>= 1 )
{
if ( p & 1 )
sol *= x;
x *= x;
}
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 = 1;
while ( x % p[i] == 0 )
x /= p[i], ++t;
nr *= t;
s *= (logPow( p[i], t ) - 1) / (p[i] - 1), s %= MOD;
}
if ( x > 1 )
{
nr <<= 1;
s *= (x * x - 1) / (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';
}
}