Pagini recente » Cod sursa (job #1194360) | Cod sursa (job #2498135) | Cod sursa (job #680789) | Cod sursa (job #1795690) | Cod sursa (job #2467822)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("inversmodular.in");
ofstream fout("inversmodular. out");
///complexitate O(sqrt(n))
int Phi(int n)
{
int sol = n, p;
for(p = 2; p * p <= n && n > 1; p++)
{
if(n % p == 0)
sol = sol / p *(p-1);
while(n % p == 0)
n /= p;
}
if(n > 1)
sol = sol / n * (n - 1);
return sol;
}
int LogP(int a, int n, int Mod)
{
int p =1;
while(n > 0)
{
if(n % 2 == 0) p = 1LL* p* a %Mod;
n=n/2;
a = a* a% Mod;
}
return p;
}
int main()
{
int a, n, phi;
fin >> a >> n;
phi = Phi(n);
fout << LogP(a, phi-1, n) << "\n";
fout.close();
return 0;
}