Pagini recente » Cod sursa (job #1848748) | Cod sursa (job #271507) | Cod sursa (job #1991949) | Cod sursa (job #1880664) | Cod sursa (job #2035874)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll n;
ll exp_log(ll a, ll e,ll mod)
{
ll rez=1;
while(e!=0)
{
if(e%2==1)
{
rez=(rez*a)%mod;
}
a=(a*a)%mod;
e=e/2;
}
return rez%mod;
}
ll fi(ll nr)
{
ll var=1,e=0,gasit=0;
for(int i=2; i*i<=nr; ++i)
{
if(nr%i==0)
{
gasit=1;
e=0;
while(nr%i==0)
{
nr=nr/i;
e++;
}
if(e)
var=var*exp_log(i,e-1,n)*(i-1);
}
}
if(gasit)
return var;
else
return nr-1;
}
int main()
{
ifstream f("inversmodular.in");
ofstream g("inversmodular.out");
ll a;
f>>a>>n;
g<<exp_log(a,fi(n)-1,n);
return 0;
}