Pagini recente » Cod sursa (job #1512578) | Cod sursa (job #2475973) | Cod sursa (job #2641069) | Cod sursa (job #1742305) | Cod sursa (job #1348266)
#include <fstream>
using namespace std;
ifstream in ("inversmodular.in");
ofstream out ("inversmodular.out");
int a, n;
int phi(int n)
{
int x=n;
for (int i=2;i*i<=x;i++)
{
if (n%i==0)
{
while (n%i==0)n=n/i;
x=x/i*(i - 1);
}
}
if (n!=1) x=x/n*(n - 1);
return x;
}
long long functie(long long a,long b)
{
if(b==0){return 1;}
if(b%2==0)
{
long long aux;
aux=functie(a,b/2);
return /*(functie(a,b/2)*functie(a,b/2))%c*/(aux*aux)%n;
}
if(b%2==1)
{
return (functie(a,b-1)*a)%n;
}
}
int main()
{
in>>a>>n;
int fi=phi(n)-1;
out<<functie(a,fi);
return 0;
}