Pagini recente » Borderou de evaluare (job #66777) | Borderou de evaluare (job #942390) | Borderou de evaluare (job #1378854) | Borderou de evaluare (job #1754795) | Cod sursa (job #3274266)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("inversmodular.in");
ofstream fout("inversmodular.out");
int n, mod;
inline void euclidExtind(int a, int b, int &x1, int &y1) {
if(b == 0) {
x1 = 1, y1 = 0;
return ;
}
int x2, y2;
euclidExtind(b, a % b, x2, y2);
x1 = y2;
y1 = (x2 - a / b * y2) % mod;
}
inline int invModular(int n) {
int x1, y1;
euclidExtind(n, mod, x1, y1);
if(x1 < 0) x1 += mod;
return x1;
}
signed main()
{
fin >> n >> mod;
fout << invModular(n);
return 0;
}