Cod sursa(job #2528875)

Utilizator BAlexandruBorgovan Alexandru BAlexandru Data 22 ianuarie 2020 18:42:49
Problema Invers modular Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.66 kb
#include <fstream>

using namespace std;

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

int a,n;

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

int inv_mod(int x, int mod)
{
    int p = phi(mod) - 1;
    int rez = 1;
    while (p)
    {
        if (p%2)
            rez = (1LL * rez * x) % mod;
        x = (1LL * x * x) % mod;
        p = p / 2;
    }
    return rez;
}

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