Pagini recente » Cod sursa (job #1183672) | Cod sursa (job #564261) | Cod sursa (job #1086569) | Cod sursa (job #1490038) | Cod sursa (job #2034501)
#include <bits/stdc++.h>
using namespace std;
#define ll long long
ifstream f("inversmodular.in");
ofstream g("inversmodular.out");
ll fi(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;
}
ll exp_log(ll n,ll e,ll mod)
{
ll sol=1;
while (e!=0)
{
if (e%2==1) sol=sol*n%mod;
n=n*n%mod;
e/=2;
}
return sol%mod;
}
int main()
{
ll a,n;
f>>a>>n;
g<<exp_log(a,fi(n)-1,n);
return 0;
}