Cod sursa(job #2664183)
Utilizator | Data | 28 octombrie 2020 08:22:32 | |
---|---|---|---|
Problema | Invers modular | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.5 kb |
#include <fstream>
using namespace std;
void euclid(int a, int b, int *x, int *y) { // nu avem nevoie si de d
if (b == 0) {
*x = 1;
*y = 0;
} else {
int x0, y0;
euclid(b, a % b, &x0, &y0);
*x = y0;
*y = x0 - (a / b) * y0;
}
}
ifstream fin( "inversmodular.in" );
ofstream fout( "inversmodular.out" );
int main() {
int a, n, x, y;
fin >> a >> n;
euclid( a, n, &x, &y );
if ( x <= 0 )
x = n + x % n;
fout << x;
return 0;
}