Pagini recente » Cod sursa (job #635950) | Cod sursa (job #1940717) | Cod sursa (job #3149574) | Cod sursa (job #107816) | Cod sursa (job #1414568)
#include <fstream>
using namespace std;
ifstream f("inversmodular.in");
ofstream g("inversmodular.out");
int N, A;
int phi(int x)
{
int rez=x;
for (int i=2; i*i<=x; ++i)
if (x%i==0)
{
rez=rez/i*(i-1);
while (x%i==0)
x/=i;
}
if (x!=1) rez=rez/x*(x-1);
return rez;
}
long long lgput(long long baza, int expo, int mod)
{
long long res=1;
while (expo)
{
if (expo&1) res*=baza;
baza*=baza; baza%=mod;
res%=mod; expo/=2;
}
return res;
}
int main()
{
f>>A>>N;
g<<lgput(A, phi(N)-1, N)<<'\n';
return 0;
}