Cod sursa(job #2018522)

Utilizator ruxandramateiMatei Ruxandra ruxandramatei Data 5 septembrie 2017 11:46:24
Problema Invers modular Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <iostream>
#include <fstream>

using namespace std;

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

long long A, N;//date de intrare

void citire(){
  in >> A >> N;
}

//(A * X) % N = 1 ->  A * X + N * Y = cmmmdc(A, N) = 1; N * Y div cu N

void euclidExtins(long long a, long long b, long long & x, long long & y){
  if(b == 0){
    x = 1;
    y = 0;
  }else{
    long long x0, y0;
    euclidExtins(b, a%b, x0, y0);
    x = y0;
    y = x0 - (a / b)*y0;
  }
}

void rezolvare(){
  long long x, y;
  euclidExtins(A, N, x, y);
  out << x;
}

int main(){
  citire();
  rezolvare();
  return 0;
}