Cod sursa(job #1124945)

Utilizator japjappedulapPotra Vlad japjappedulap Data 26 februarie 2014 14:41:54
Problema Invers modular Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#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;
};