Cod sursa(job #3225614)

Utilizator uncle_sam_007IOAN BULICA uncle_sam_007 Data 18 aprilie 2024 10:19:08
Problema Invers modular Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>

using namespace std;

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

#define LL long long

LL Phi(LL nr)
{
	LL cur = nr;
	for(LL i = 2;i * i <= nr; ++i)
	{
		if (nr % i == 0)
		{
			while(nr % i == 0)
                nr /= i;
			cur = (cur / i) * (i - 1);
		}
	}
    if (nr != 1)
        cur = cur / nr * (nr - 1);
    return cur;
}

int MOD;

LL exponentiere(LL nr,LL p)
{
    if(p==0)
        return 1;
    if(p%2==1)
        return ((exponentiere(nr,p-1)%MOD)*p)%MOD;
    return (exponentiere(nr,p/2)%MOD*exponentiere(nr,p/2)%MOD)%MOD;
}

int main()
{
    int n;
    fin>>n>>MOD;
    LL x;
    x=Phi(n);
    fout<<exponentiere(n,x-1)%MOD;
    return 0;
}