Pagini recente » Cod sursa (job #1084359) | Cod sursa (job #198486) | Cod sursa (job #1443775) | Cod sursa (job #257478) | Cod sursa (job #2124467)
#include <iostream>
#include <fstream>
std::ifstream f("inversmodular.in");
std::ofstream g("inversmodular.out");
using namespace std;
long long n;
long long my_pow(long long a,long long b)
{
long long r=1;
while(b)
{
if(b%2)
{
r=(a%n)*(r%n);
r%=n;
}
a*=a;
a%=n;
b/=2;
}
return r;
}
int main()
{
long long a;
f>>a>>n;
long long fi;
fi=n;
bool k;
long long i;
long long cop;
cop=n;
for(i=2; i*i<=cop; i++)
{
k=false;
while(cop%i==0)
{
cop/=i;
k=true;
}
if(k) fi=(fi/i) * (i-1);
}
if(cop>1) fi=(fi/cop) * (cop-1);
g<<my_pow(a,fi-1);
return 0;
}