Cod sursa(job #2970689)

Utilizator _Fibonacci_Caitaz _Fibonacci_ Data 25 ianuarie 2023 18:45:02
Problema Invers modular Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.68 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("inversmodular.in");
ofstream fout ("inversmodular.out");
long long a,n,x,phi,i;

long long pw(long long A ,long long N)
{
    if(N == 0)
        return 1;
    if(N % 2 == 1)
        return (A%n)* pw(A%n , N - 1)%n;
    long long P = pw(A%n , N / 2)%n;
    return (P%n) * (P%n);
}

long long Euler(long long numar)
{
	long long fi=numar;
	for (i=2;i<=sqrt(numar);i++)
	{
		if (numar%i==0)
		{
			while(numar%i==0)numar/=i;
			fi=(fi/i)*(i-1);
		}
	}
	if (numar!=1)fi=fi/numar*(numar-1);
	return fi;
}

int main()
{
	fin >> a >>n ;
	phi = Euler(n);
	x=pw(a,phi-1);
	fout << x%n << "\n";
	return 0;
}