Cod sursa(job #3199096)

Utilizator Radu_BicliBiclineru Radu Radu_Bicli Data 31 ianuarie 2024 19:15:48
Problema Invers modular Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("inversmodular.in");
ofstream fout("inversmodular.out");
long long a, mod;

static inline long long Phi(long long nr) {
    long long r = nr;
    long long d = 2;
    while(nr > 1) {
        if(nr % d == 0) {
            r = r / d * (d - 1);
            while(nr % d == 0) nr /= d;
        }
        d++;
        if(d * d > nr) d = nr;
    }
    return r;
}

static inline long long Put(long long a, long long n) {
    long long p = 1;
    while(n) {
        if(n % 2 == 1) p = (p * a) % mod;
        a = (a * a) % mod;
        n /= 2;
    }
    return p;
}

int main() {
    fin >> a >> mod;
    fout << Put(a, Phi(mod) - 1);

    return 0;
}