Cod sursa(job #1632130)

Utilizator ovidiuz98Zamfir Ovidiu ovidiuz98 Data 5 martie 2016 21:48:59
Problema Invers modular Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <fstream>

using namespace std;

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

int A,N,ans,pow;

int getphi(int N){
    int ans=N;
    for(int i=2;i*i<=N;i++)
        if(N%i==0){
            while(N%i==0)
                N/=i;
            ans-=ans/i;
        }
    if(N!=1)
        ans-=ans/N;
    return ans;

}

int main(){

    fin >> A >> N;

    pow = getphi(N)-1;

    pow%=N;

    ans = 1;

    while(pow){
        if(pow&1)
            ans=(ans*A)%N;
        A=(A*A)%N;
        pow/=2;
    }

    fout << ans << "\n";

}