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