Pagini recente » Cod sursa (job #2565886) | Cod sursa (job #984109) | Cod sursa (job #404386) | Cod sursa (job #1141909) | Cod sursa (job #1398183)
#include<fstream>
#include<algorithm>
using namespace std;
typedef int64_t var;
ifstream fin("inversmodular.in");
ofstream fout("inversmodular.out");
typedef pair<var, var> Sol;
#define mp make_pair
Sol euclid(var a, var b, var c) {
if(b == 0) {
if(c % a)
return mp(0, 0);
else
return mp(c/a, 0);
} else {
Sol rez = euclid(b, a%b, c);
return mp(rez.second, rez.first - a/b * rez.second);
}
}
int main() {
var a, p;
fin>>a>>p;
auto R = euclid(a, p, 1);
var r = R.first;
fout<<(r%p+p)%p;
}