Mai intai trebuie sa te autentifici.
Cod sursa(job #1867743)
Utilizator | Data | 4 februarie 2017 12:09:07 | |
---|---|---|---|
Problema | Invers modular | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.56 kb |
#include <iostream>
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;
cin>>a>>n;
e=indeuler(n);
cout<<akmodn(a, e-1, n);
return 0;
}