Cod sursa(job #3225635)

Utilizator Andrei_RusuAndrei Alexandru Rusu Andrei_Rusu Data 18 aprilie 2024 11:55:55
Problema Invers modular Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.62 kb
#include <fstream>

using namespace std;
ifstream fin("inversmodular.in");
ofstream fout("inversmodular.out");
bool prim(int n)
{
    if(n<2 || !(n&1) && n!=2)
        return 0;
    if(n==2)
        return 1;
    for(int d=3; d*d<=n; d+=2)
        if(n%d)
            return 0;
    return 1;
}
long long fastExpo(int p, int e, int mod)
{
    long long sol=1, a=p%mod;
    for(int k=1; k<=e; k<<=1)
    {
        if(e&k) sol*=a%mod;
        a*=a%mod;
    }
    return sol%mod;
}
int main()
{
    int a, n;
    fin >> a >> n;
    if(prim(n))
    {
        fout << fastExpo(a,n-2,n);
    }
    return 0;
}