Pagini recente » Cod sursa (job #364849) | Cod sursa (job #3179600) | Cod sursa (job #299745) | Cod sursa (job #166948) | Cod sursa (job #2566057)
#include <bits/stdc++.h>
#define mod 9973
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
long long nr = 1 , sum = 1 , n ;
bool a[2000003] ;
long long prim[1000007] ;
void ciur ( )
{
int i , j , ct = 1 ;
a[ 1 ] = 1 ;
for ( i = 4 ; i <= 1000001 ; i += 2 )
a[ i ] = 1 ;
for( i = 3 ; i <= 1000001; i += 2 )
if( a [ i ] == 0 )
for ( j = 3 * i ; j <= 1000001 ; j += 2*i )
a[ j ] = 1 ;
prim[ 1 ] = 2 ;
for( i = 3 ; i <= 1000001; i += 2 )
if( a [ i ] == 0 )
prim[ ++ ct ] = i ;
}
long long exponentiere( int x , int p )
{
if( p == 1 )
return x ;
if( p % 2 == 0 )
{
long long t = exponentiere( x , p / 2 ) ;
return ( 1LL * t * t ) % mod ;
}
else
{
long long t = exponentiere( x , p / 2 ) ;
return ( ( 1LL * t * t ) % mod ) * x % mod ;
}
}
long long invers ( int x )
{
return exponentiere( x , mod - 2 ) ;
}
void desc( long long x )
{
long long ct , d = prim[ 1 ] , p , num = 1 ;
while( x > 1 )
{
p = 1;
ct = 0 ;
while( x % d == 0 )
{
x= x / d ;
p = ( p * d ) % mod ;
ct ++ ;
//cout<<x<<" "<<d<<"\n";
}
if( ct > 0 )
{
nr = ( nr * ( ct + 1 ) ) % mod ;
p = ( p * d ) % mod ;
p = p - 1 ;
sum = ( sum * ( p * invers( d - 1 ) ) ) % mod ;
}
d = prim [ ++ num ] ;
if( d * d > x )
d = x ;
}
}
int main()
{ long long x ;
ciur();
fin >> n;
for ( int i = 1 ; i <= n ; i ++ )
{
fin >> x;
desc( x ) ;
fout << nr << " " << sum << "\n" ;
sum = 1 ;
nr = 1 ;
}
return 0;
}