Cod sursa(job #1124930)

Utilizator japjappedulapPotra Vlad japjappedulap Data 26 februarie 2014 14:30:39
Problema Invers modular Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>
#include <stack>
using namespace std;

ifstream is ("inversmodular.in");
ofstream os ("inversmodular.out");

long long a, n, x;

long long POW(long long A, long long B, long long MOD);

int main()
{
    is >> a >> n;
    x = POW(a, n-2, n);
    os << x;

    is.close();
    os.close();
    return 0;
}

long long POW(long long A, long long B, long long MOD)
{
    stack <int> S;
    long long 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 % MOD;
};