Cod sursa(job #2720846)

Utilizator iancupoppPopp Iancu Alexandru iancupopp Data 11 martie 2021 12:35:28
Problema Invers modular Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>

using namespace std;

int phi(int n) {
    int rez = 1, d = 2, put;
    while (d * d <= n) {
        put = 1;
        while (n % d == 0) {
            put *= d;
            n /= d;
        }
        rez *= put - (put / d);
        ++d;
    }
    if (n > 1)
        rez *= n - 1;
    return rez;
}

int exp2(int a, int p, int mod) {
    int rez, ac;
    rez = ac = 1;
    while (p) {
        ac = (ac * a) % mod;
        if (p % 2)
            rez = (rez * p) % mod;
        else
            rez = ((rez * ac) % mod * ac) % mod;
        p /= 2;
    }
    return rez;
}

int main() {
    ifstream in("inversmodular.in");
    ofstream out("inversmodular.out");

    int a, n;
    in >> a >> n;
    out << exp2(a, phi(n) - 1, n);

    in.close();
    out.close();
    return 0;
}