Cod sursa(job #2127708)

Utilizator tudor199G Tudor tudor199 Data 10 februarie 2018 22:33:42
Problema Invers modular Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <iostream>
#include <fstream>

using namespace std;

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

long long invmod(long long a1, const long long MOD){
    long long a0 = MOD, b0 = MOD, b1 = 1, man, q;
    while(a1 > 1){
        q = a0 / a1;
        man = a1;
        a1 = a0 - q * a1;
        if(a1 < 0){
            a1 = MOD - ((-a1) % MOD);
        }
        a0 = man;
        man = b1;
        b1 = b0 - q * b1;
        if(b1 < 0){
            b1 = MOD - ((-b1) % MOD);
        }
        b0 = man;
    }
    if(a1 == 1){
        return b1;
    }
    return -1;
}

int main(){
    int a, m;
	fin>>a>>m;
	fout<<invmod(a, m);
	return 0;
}