Cod sursa(job #3002446)

Utilizator brianna_enacheEnache Brianna brianna_enache Data 14 martie 2023 19:51:56
Problema Invers modular Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include <bits/stdc++.h>
using namespace std;

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

int a, n;
int Phi(int x)
{
    int f, e = 0, phi = x;
    for(f = 2; f * f <= x and x > 1; f++)
    {
        e = 0;
        while(x % f == 0)
        {
            e++;
            x /= f;
        }
        if(e > 0) phi = (phi / f) * (f - 1);
    }
    if(x > 1) phi = (phi / x) * (x - 1);
    return phi;
}
int main()
{
    int p, rez = 1;
    in >> a >> n;
    p = Phi(n) - 1;
    while(p > 0)
    {
        if(p % 2 == 1) rez = (rez * a) % n;
        a = (a * a) % n;
        p /= 2;
    }
    out << rez << "\n";
    return 0;
}