Pagini recente » Cod sursa (job #2292220) | Cod sursa (job #3130451) | Cod sursa (job #2519833) | Cod sursa (job #2050459) | Cod sursa (job #870070)
Cod sursa(job #870070)
#include <fstream>
using namespace std;
ifstream f ( "inversmodular.in" );
ofstream g ( "inversmodular.out" );
#define ll long long
ll A, N;
ll EXP ( ll POWER )
{
if ( POWER == 1 ) return A;
if ( POWER % 2)
return ( A * ( EXP ( POWER / 2 )%N * EXP ( POWER / 2 )%N ) % N ) % N ;
else
return ( EXP ( POWER / 2 )%N * EXP ( POWER / 2 )%N ) % N;
}
int phi ( int value )
{
int i, result = value;
for ( i = 2; i*i <= value; ++i ) if ( value % i == 0 )
{
for ( ; value % i == 0; value /= i );
result = result - result / i;
}
if ( value != 1 )
result = result - result / value;
return result;
}
int main()
{
f >> A >> N;
g << EXP ( phi ( N ) - 1 ) << '\n';
f.close();
g.close();
return 0;
}