Pagini recente » Cod sursa (job #1780881) | Cod sursa (job #432048) | Cod sursa (job #735853) | Clasament preONI 2007, Clasele 11-12 | Cod sursa (job #1867745)
#include <iostream>
#include <fstream>
using namespace std;
int indeuler(int n)
{
int i, e;
e = n;
for (i=2; i*i<=n; i++)
if(n%i==0)
{
e=n*(i-1)/i;
while (n % i == 0)
n /= i;
}
if (n != 1)
e = e / n * (n - 1);
return e;
}
int akmodn(int a, int k, int n)
{
int p=1;
while(k!=0)
{
if(k%2!=0)
p=p*a%n;
k /= 2;
a=a*a%n;
}
return p;
}
int main()
{
int l, d, n, a, e;
ifstream in("inversmodular.in");
ofstream out("inversmodular.out");
in>>a>>n;
e=indeuler(n);
out<<akmodn(a, e-1, n);
return 0;
}