Cod sursa(job #3213426)

Utilizator Alex_DumitrascuAlex Dumitrascu Alex_Dumitrascu Data 13 martie 2024 09:46:29
Problema Invers modular Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.64 kb
#include <bits/stdc++.h>

#define ll long long

//#define fin cin
//#define fout cout

using namespace std;

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

//https://ro.wikipedia.org/wiki/Mica_teorem%C4%83_a_lui_Fermat
/*
a^(p-1)=1 mod p (a^(p-1)%p=1)
a*b=1 mod p = a^(p-1) | / a
b=a^(p-2)
*/

ll a, n;

ll exponentiere (ll a, ll b)
{
    ll rez=1;
    while (b!=0) {
        if (b%2==1) {
            rez*=a;
            rez%=n;
        }
        a*=a;
        a%=n;
        b/=2;
    }
    return rez;
}

int main()
{
    fin.tie(0); fin.sync_with_stdio(false);
    fin>>a>>n;
    fout<<exponentiere(a, n-2);
    return 0;
}