Cod sursa(job #2460899)

Utilizator 1chiriacOctavian Neculau 1chiriac Data 24 septembrie 2019 17:40:40
Problema Invers modular Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>

using namespace std;
ifstream fin ("inversmodular.in");
ofstream fout ("inversmodular.out");
//const int modu=1000000007;
int putere_log (int a,int n,int modulol)
{
	if(n==0)
		return 1;
	else
	{
		if(n%2==1)
			return ((a%modulol)*((putere_log((a%modulol)*(a%modulol)%modulol,n/2,modulol)%modulol)))%modulol;
		else
			return (putere_log(((a%modulol)*(a%modulol))%modulol,n/2,modulol))%modulol;
	}
}
int phi_de_n (int n)
{
	int phin=1,d=2,contorcrt;
	while(n>1)
	{
		if(n%d==0)
		{
			contorcrt=0;
			while(n%d==0)
				n/=d,contorcrt++;
			phin=phin*(d-1)*putere_log(d,contorcrt-1,1000000007);
		}
		d++;
		if(d*d>n)
			d=n;
	}
	return phin;
}
int invers_modular(int a,int n)
{
	//n=phi_de_n(n);
	return putere_log(a,phi_de_n(n)-1,n);
	
}
int main ()
{
	int a,n;
	fin>>a>>n;
	fout<<invers_modular(a,n);
}