Pagini recente » Cod sursa (job #1348832) | Cod sursa (job #2010348) | Cod sursa (job #3193090) | Cod sursa (job #2910030) | Cod sursa (job #2404564)
#include <stdio.h>
#define LL long long
using namespace std;
int A, M;
int expLog_modM(int base, int pow) {
if (pow == 0) return 1;
int mid = expLog_modM(base, pow >> 1);
if (pow&1) return (base * mid * mid) % M;
return (mid * mid) % M;
}
int main()
{
freopen("inversmodular.in", "r", stdin);
freopen("inversmodular.out", "w", stdout);
scanf("%d %d", &A, &M);
//printf("%d\n", expLog_modM(A, M-2));
LL put = M-2;
LL nr = A;
LL crt = 1;
for(LL p = 1;p <= put;p <<= 1)
{
if (p & put) crt = (crt * nr) % M;
nr = (nr * nr) % M;
}
printf("%lld\n",crt);
return 0;
}