Pagini recente » Cod sursa (job #827107) | Cod sursa (job #50228) | Cod sursa (job #1089091) | Cod sursa (job #1626273) | Cod sursa (job #2512853)
#include <bits/stdc++.h>
using namespace std;
int a, MOD, x, d, fi, fm;
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)) % MOD;
if(b % 2 == 1)return (a * paw(a, b / 2) * paw(a, b / 2)) % MOD;
}
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;
}