Pagini recente » Cod sursa (job #79374) | Cod sursa (job #3276175) | Cod sursa (job #723036) | Cod sursa (job #2830042) | Cod sursa (job #1816403)
#include <fstream>
#include <cmath>
#define ll long long
using namespace std;
ifstream fin("inversmodular.in");
ofstream fout("inversmodular.out");
ll a, n;
ll pow(ll a, ll p)
{
if(p == 1)
return a % n;
ll rez = pow(a, p / 2);
rez = rez * rez % n;
if(p % 2 == 0)
return rez;
else
return rez * a % n;
}
int main()
{
fin >> a >> n;
ll nr = n;
for(int i = 2; 1LL * i * i <= nr; i ++)
if(n % i == 0)
{
while(n % i == 0) n /= i;
nr = nr - nr / i;
}
if(n != 1)
nr = nr - nr / n;
fout << pow(a, nr - 1);
return 0;
}