Cod sursa(job #3346781)

Utilizator andreiPaladeAndrei Razvan Palade andreiPalade Data 15 martie 2026 11:42:40
Problema Invers modular Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.66 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int a, n, nr=0;

long long pow(int x, int power){
    long long rez=1, left=x;
    while(power>0){
        if(power%2==1){
            rez=(left*rez)%n;
            power--;
        }
        power=power/2;
        left=(left*left)%n;
    }
    return rez;
}

int cmmdc(int x, int y){
    while(y!=0 and x!=0){
        int r=x%y;
        x=y;
        y=r;
    }
    return x;
}

int main()
{
    fin>>a>>n;
    for(int i=1;i<n;i++)
        if(cmmdc(i, n)==1) nr++;
    fout<<pow(a, nr-1)%n;
    return 0;
}