Pagini recente » Cod sursa (job #36441) | Cod sursa (job #68792) | Cod sursa (job #52757) | Cod sursa (job #2918569) | Cod sursa (job #2512852)
#include <bits/stdc++.h>
using namespace std;
int paw(int a, int b)
{
if(b == 0)return 1;
if(b == 1)return a;
if(b % 2 == 0)return paw(a, b / 2) * paw(a, b / 2);
if(b % 2 == 1)return a * paw(a, b / 2) * paw(a, b / 2);
}
int a, MOD, x, d, fi, fm;
int main()
{
ifstream f("inversmodular.in");
ofstream g("inversmodular.out");
f >> a >> MOD;
//Aflam fi(MOD)
x = MOD;
d = 2;
fi = 1;
do
{
fm = 0;
while(x % d == 0)
{
x = x / d;
fm ++;
}
if(fm > 0)fi = fi * paw(d, fm - 1) * (d - 1);
d ++;
if(d * d > x)fi = fi * (x - 1), x = 1;
}while(x != 1);
g << paw(a, fi - 1) % MOD;
return 0;
}