Cod sursa(job #3298523)

Utilizator KapetaneAvram Armand-Florin Kapetane Data 30 mai 2025 20:30:54
Problema Invers modular Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("inversmodular.in");
ofstream fout("inversmodular.out");

long long ridicare_log(int N,int P,int constanta)
{
    if(P==0) return 1;

    long long rez=ridicare_log(N,P/2,constanta);
    rez=(rez*rez)%constanta;

    if(P%2==1) rez=(rez*N)%constanta;

    return rez;

}
int phi(int N)
{
    int aux=N,sol=N, d=2;
    while(d*d<=aux)
    {
        if(aux%d==0)
        {
            aux=aux/d;
            aux=aux*(d-1);
            while(aux%d==0) aux=aux/d;
        }
        d++;
    }
    if(aux>1)
    {
        sol=sol/aux;
        sol=sol*(aux-1);
    }
    return sol;
}
int main()
{   
	int A,N;
	fin>>A>>N;

	fout<<ridicare_log(A,phi(N)-1,N);

    fin.close();
    fout.close();
	return 0;
}