Pagini recente » Cod sursa (job #1006328) | Cod sursa (job #388099) | Cod sursa (job #2536094) | Cod sursa (job #2868828) | Cod sursa (job #2878147)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ( "inversmodular.in" );
ofstream fout ( "inversmodular.out" );
int main () {
int a, p, x, phi = 1, e, d, cp;
fin >> a >> p;
cp = p;
d = 2;
while ( d * d <= p ){
e = 1;
while ( p % d == 0 ){
e = e * d;
p = p / d;
}
if ( e > 1 )
phi = phi * ( e / d ) * ( d - 1 );
d++;
}
if ( p > 1 )
phi = phi * ( p - 1 );
x = 1;
while ( phi > 0 ) {
if ( phi % 2 == 1 ) {
x = x * a % cp;
phi--;
}
x = x * a % cp;
phi = phi / 2;
}
fout << x;
return 0;
}