Pagini recente » tema | Cod sursa (job #2293309) | Cod sursa (job #1892742)
#include <bits/stdc++.h>
using namespace std;
fstream in ( "ssnd.in" , ios::in );
fstream out( "ssnd.out", ios::out );
const int CNS = 1000005;
const int MOD = 9973;
bitset<CNS> mrk;
vector<int> prm;
int lgp( int x, int y ) {
if( y == 0 )
return 1;
int z = lgp( x, y / 2 );
if( y % 2 != 2 )
z = ( z * z ) % MOD;
if( y % 2 == 1 )
z = ( z * 1LL * x ) % MOD;
return z;
}
int main( void ) {
ios::sync_with_stdio( false );
mrk[0] = mrk[1] = true;
for( int i = 2; i < CNS; i ++ ) {
if( mrk[i] == false ) {
prm.push_back( i );
for( int j = i + i; j < CNS; j += i )
mrk[j] = true;
}
}
int n;
in >> n;
for( int i = 1; i <= n; i ++ ) {
long long x;
in >> x;
int ans1 = 1, ans2 = 1;
for( int p : prm ) {
if( p * 1LL * p > x )
break;
if( x % p != 0 )
continue;
int val = p, nr = 1;
while( x % p == 0 ) {
val = ( val * 1LL * p ) % MOD;
x /= p; nr ++;
}
ans1 *= nr;
ans2 = ( ans2 * 1LL * ( ( val - 1 + MOD ) % MOD ) * lgp( p - 1, MOD - 2 ) ) % MOD;
}
if( x != 1 ) {
ans1 *= 2;
ans2 = ( ans2 * 1LL * ( ( x * 1LL * x - 1 ) % MOD ) * lgp( int( x - 1 ), MOD - 2 ) ) % MOD;
}
out << ans1 << " " << ans2 << "\n";
}
return 0;
}