Pagini recente » Cod sursa (job #94835) | Cod sursa (job #2849311) | Cod sursa (job #41314) | Cod sursa (job #390341) | Cod sursa (job #2460899)
#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);
}