Cod sursa(job #2247381)

Utilizator preda.andreiPreda Andrei preda.andrei Data 28 septembrie 2018 15:27:26
Problema Invers modular Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include <fstream>

using namespace std;

pair<int, int> Euclid(int a, int b)
{
    if (b == 0) {
        return {1, 0};
    }

    auto prev = Euclid(b, a % b);
    auto x = prev.second;
    auto y = prev.first - (a / b) * prev.second;
    return {x, y};
}

int ModInv(int a, int b)
{
    auto inv = Euclid(a, b).first;
    while (inv < 0) {
        inv += b;
    }
    return inv;
}

int main()
{
    ifstream fin("inversmodular.in");
    ofstream fout("inversmodular.out");

    int a, b;
    fin >> a >> b;

    auto inv = ModInv(a, b);
    fout << inv << "\n";

    return 0;
}