Pagini recente » Cod sursa (job #259171) | Cod sursa (job #3183816) | Cod sursa (job #341607) | Cod sursa (job #1304184) | Cod sursa (job #1124923)
#include <fstream>
#include <stack>
using namespace std;
ifstream is ("inversmodular.in");
ofstream os ("inversmodular.out");
int a, n, x;
int POW(int A, int B, int MOD);
int main()
{
is >> a >> n;
x = POW(a, n-2, n);
os << x;
is.close();
os.close();
return 0;
}
int POW(int A, int B, int MOD)
{
stack <int> S;
int aux = B;
for (; aux; aux /= 2) S.push(aux % 2);
for (aux = 1 ; !S.empty(); S.pop())
if (S.top() == 0) aux = ( 1LL * aux * aux) % MOD;
else aux = ( 1LL * aux * aux * A) % MOD;
return aux;
};