Cod sursa(job #3152991)

Utilizator proflaurianPanaete Adrian proflaurian Data 27 septembrie 2023 15:54:36
Problema Invers modular Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.65 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("inversmodular.in");
ofstream g("inversmodular.out");
int64_t MOD;
int64_t a;
int64_t phi(int64_t n)
{
    int64_t ph=n;
    for(int64_t p=2; p*p<=n; p++)
        if(n%p==0)
        {
            ph=ph/p*(p-1);
            while(n%p==0)
                n/=p;
        }
    if(n>1)
        ph=ph/n*(n-1);
    return ph;
}
int64_t putere(int64_t b,int64_t e)
{
    if(e==0)
        return 1LL;
    int64_t r=putere(b,e/2);
    r=r*r%MOD;
    if(e%2==1)
        r=r*b%MOD;
    return r;
}

int main()
{
    f>>a>>MOD;
    g<<putere(a,phi(MOD)-1)<<'\n';
    return 0;
}