Pagini recente » Cod sursa (job #717797) | Cod sursa (job #1532113) | Cod sursa (job #2499858) | Cod sursa (job #2453901) | Cod sursa (job #3253324)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("inversmodular.in");
ofstream g("inversmodular.out");
int phi(int n)
{
int r = n , d = 2;
while(n > 1)
{
if(n % d == 0)
{
r = r / d * (d - 1);
while(n % d == 0)
n /= d;
}
d ++;
if(d * d > n)
d = n;
}
return r;
}
int exp(int A , int n, int modulo)
{
int P = 1;
while(n)
{
if(n % 2 == 1)
{
P *= A;
P%=modulo;
}
A *= A;
A%=modulo;
n /= 2;
}
return P;
}
int main()
{
int a, N;
f >> a >> N;
int p= phi(N);
g << exp(p-1,a,N);
return 0;
}