Pagini recente » Cod sursa (job #1698127) | Cod sursa (job #567474) | Cod sursa (job #2199476) | Cod sursa (job #51936) | Cod sursa (job #949083)
Cod sursa(job #949083)
#include<fstream>
#include<bitset>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
#define maxn 1000001
#define mod 9973
int nrp, prim[maxn] ;
bitset<maxn> ok ;
long long N ;
int tst ;
void ciur()
{
for(int i = 2; i < maxn; ++i )
{
if( ok[i] == 0 )
{
prim[ ++nrp ] = i ;
for(int j = 2 * i; j < maxn; j += i )
ok[j] = 1 ;
}
}
}
int putere(int x, int p)
{
int rez = 1 ;
x %= mod ;
while( p )
{
if( p % 2 == 1 )
{
rez *= x ;
rez %= mod ;
}
x *= x ;
x %= mod ;
p >>= 1 ;
}
return rez ;
}
void rezolvare()
{
fin >> N ;
int nd = 1, sd = 1 ;
for(int i = 1; i <= nrp && ( long long )( prim[i] * prim[i] ) <= N; ++i )
{
if( N % prim[i] )
continue ;
int p = 0 ;
while( N % prim[i] == 0 )
{
N /= prim[i] ;
++p ;
}
nd *= ( p + 1 ) ;
int sus = ( putere( prim[i], p + 1 ) - 1 ) % mod ;
int inv = putere( prim[i] - 1, mod - 2 ) % mod ;
sd = ( ( ( sd * sus ) % mod ) * inv ) % mod ;
}
if( N > 1 )
{
nd *= 2;
sd = ( ( long long )( sd * ( N + 1 ) ) % mod ) ;
}
fout << nd << " " << sd << "\n" ;
}
int main()
{
ciur() ;
fin >> tst ;
for(int i = 1; i <= tst; ++i )
rezolvare() ;
return 0 ;
}