Pagini recente » Cod sursa (job #1635913) | Cod sursa (job #864808) | Cod sursa (job #2252182) | Cod sursa (job #2674059) | Cod sursa (job #1926077)
#include <fstream>
#include <iostream>
#define mod 9973
#define Nmax 1000005
using namespace std;
ifstream f ("ssnd.in");
ofstream g ("ssnd.out");
int t, prime[ Nmax ], nr_prime;
long long n;
bool viz[ Nmax ];
void ciur()
{
int i, j;
for ( i = 2; i < Nmax; ++ i )
{
if ( !viz[ i ] )
{
prime[ ++ nr_prime ] = i;
for ( j = i + i; j < Nmax; j += i )
viz[ j ] = true;
}
}
}
int rid_la_putere( int nr, int p )
{
int i;
int sol = 1;
for ( i = 0; (1 << i) <= p; ++ i )
{
if ( ((1 << i) & p) > 0 )
sol = (sol * nr) % mod;
nr = (nr * nr) % mod;
}
return sol;
}
void solve()
{
int i, p = 0, nr_divi = 1, suma_divi = 1;
f >> n;
for ( i = 1; i <= nr_prime && 1LL * prime[ i ] * prime[ i ] <= n; ++ i )
{
if ( n % prime[i] )
continue;
while ( n % prime[ i ] == 0 )
{
n /= prime[ i ];
p ++;
}
nr_divi *= (p + 1);
int numarator = (rid_la_putere( prime[ i ], p + 1 ) - 1) % mod;
int numitor = rid_la_putere( prime[ i ] - 1, mod - 2 ) % mod;
suma_divi = (((suma_divi * numarator) % mod) * numitor) % mod;
}
if ( n > 1 )
{
nr_divi *= 2;
suma_divi = (1LL * suma_divi * (n + 1) % mod);
}
g << nr_divi << " " << suma_divi << '\n';
}
int main()
{
int i = 0;
ciur();
f >> t;
for ( i = 1; i <= t; ++ i )
solve();
f.close();
g.close();
return 0;
}