Pagini recente » Cod sursa (job #2538635) | Cod sursa (job #2658107) | Cod sursa (job #2908003) | Cod sursa (job #2584322) | Cod sursa (job #1510701)
#include <cstdio>
using namespace std;
int euler( int n ){
int i, j, t, d, ok;
d = 1;
i = 2;
while( n > 1 ){
t = 1;
ok = 0;
while( n % i == 0 ){
n /= i;
t *= i;
ok = 1;
}
if( ok ) d *= ( i - 1 ) * t / i;
i++;
}
return d;
}
int dei( int mod , int putere, int baza ){
if( putere == 1 ) return baza;
else{
int t = dei( mod, putere / 2, baza );
if( putere % 2 == 1 ) return 1LL * t * t * baza % mod;
return 1LL * t * t % mod;
}
}
int main()
{
freopen("inversmodular.in","r",stdin);
freopen("inversmodular.out","w",stdout);
int a, x, t;
scanf("%d%d",&a,&x);
t = euler( x );
// printf("%d\n",t);
printf("%d",dei( x, t-1, a ));
return 0;
}