Cod sursa(job #2404571)
| Utilizator | Data | 13 aprilie 2019 01:28:50 | |
|---|---|---|---|
| Problema | Invers modular | Scor | 60 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.5 kb |
#include <stdio.h>
using namespace std;
long long A, M;
long long expLog_modM(int base, int pow) {
if (pow == 0) return 1;
long long mid = expLog_modM(base, pow >> 1);
long long mid2 = (mid * mid) % M;
if (pow&1) return (base * mid2) % M;
return mid2 % M;
}
int main()
{
freopen("inversmodular.in", "r", stdin);
freopen("inversmodular.out", "w", stdout);
scanf("%lld %lld", &A, &M);
printf("%lld\n", expLog_modM(A, M-2));
return 0;
}
