Cod sursa(job #2576069)

Utilizator MoodyFaresFares Mohamad MoodyFares Data 6 martie 2020 17:08:03
Problema Invers modular Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.59 kb
#include <cstdio>

using namespace std;

struct EuclidExtins {
  int x;
  int y;
};

EuclidExtins euclid_extins(int a, int b) {
  if (b == 0)
    return {1, 0};

  EuclidExtins lst;
  lst = euclid_extins(b, a % b);

  return {lst.y, lst.x - (a / b) * lst.y};
}

int main() {
  freopen("inversmodular.in", "r", stdin);
  freopen("inversmodular.out", "w", stdout);

  int a, n;
  scanf("%d%d", &a, &n);
  // a * x + n * y = 1

  EuclidExtins e;
  e = euclid_extins(a, n);

  int ans;
  ans = e.x;
  while (ans < 0)
    ans += n;
  printf("%d\n", ans);

  return 0;
}