Pagini recente » Cod sursa (job #2183518) | Cod sursa (job #2052107) | Cod sursa (job #2989405) | Cod sursa (job #2795405) | Cod sursa (job #1758686)
#include <cstdio>
#include <cmath>
using namespace std;
int n;
int mypow(int a, int b){
int ans = 1;
for (; b; b >>= 1){
if (b & 1)
ans = (1LL * ans * a) % n;
a = (1LL * a * a) % n;
}
return ans;
}
int main(){
freopen("inversmodular.in", "r", stdin);
freopen("inversmodular.out", "w", stdout);
int a, ans, i, phi;
scanf("%d%d", &a, &n);
phi = n;
for (i = 2; 1LL * i * i <= n; i ++)
if (n % i == 0){
while (n % i == 0)
n /= i;
phi = phi / i * (i - 1);
}
if (n > 1)
phi = phi / n * (n - 1);
ans = mypow(a, phi - 1);
printf("%d\n", ans);
return 0;
}