Cod sursa(job #2571006)

Utilizator Florinos123Gaina Florin Florinos123 Data 4 martie 2020 20:25:38
Problema Invers modular Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>

using namespace std;

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

int a, n;

int phi (int x)
{
  int rez = x;
   for (int i=2; i*i<=x; i++)
   {
       if (x % i == 0)
       {
          while (x % i == 0)
            x /= i;
          rez = rez * (i-1);
          rez /= i;
       }
   }

   if (x > 1)
   {
     rez = rez * (x-1);
     rez /= x;
   }
  return rez;
}

int Inv_Mod (int x, int mod)
{
   int p = phi(mod) - 1;
   int rez = 1;

    while (p)
    {
        if (p % 2 == 1)
            rez = (1LL * rez * x) % mod;
        x = (1LL * x * x) % mod;
        p /= 2;
    }

  return rez;
}

int main()
{
  f >> a >> n;
  g << Inv_Mod(a, n);
    return 0;
}