Cod sursa(job #3002299)

Utilizator highonrocketfuelOverweight Raccoon highonrocketfuel Data 14 martie 2023 17:20:54
Problema Invers modular Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.63 kb
#include <fstream>
#include <iostream>

using namespace std;

inline int multiply(int a, int b, int mod) {
  return (int)(((int64_t)a * b) % mod);
}

int log_pow(int base, int exp, int mod) {
  int ans = 1;
  int power = base;

  while (exp) {
    if (exp & 1) {
      ans = multiply(ans, power, mod);
    }

    exp >>= 1;
    power = multiply(power, power, mod);
  }

  return ans;
}

int inv(int a, int mod) { return log_pow(a, mod - 2, mod); }

int main() {
  ifstream r("inversmodular.in");
  ofstream w("inversmodular.out");

  int a, mod;
  r >> a >> mod;

  w << inv(a, mod) << '\n';

  return 0;
}