Pagini recente » Cod sursa (job #1278406) | Cod sursa (job #1441891) | Cod sursa (job #3182648) | Cod sursa (job #57210) | Cod sursa (job #1510679)
#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 n, int x, int a ){
if( x == 1 ) return a;
else{
int t = dei( n, x/2, a ) % n;
if( x % 2 == 1 ) return a * t * t % n;
else return t * t % n;
}
}
int main()
{
freopen("inversmodular.in","r",stdin);
freopen("inversmodular.out","w",stdout);
int a, x;
scanf("%d%d",&a,&x);
printf("%d",dei(x,euler(a)-1,a));
return 0;
}