Pagini recente » Cod sursa (job #3134747) | Cod sursa (job #1644713) | Cod sursa (job #1545079) | Cod sursa (job #1776175) | Cod sursa (job #3197890)
#include <fstream>
using namespace std;
ifstream cin("inversmodular.in");
ofstream cout("inversmodular.out");
int a,n;
int euler(int n)
{
int prod=n;
for(int d=2;d*d<=n;d++)
{
if(n%d==0)
{
prod/=d;
prod*=(d-1);
while(n%d==0)
n=n/d;
}
}
if(n!=1)
{
prod/=n;
prod=prod*(n-1);
}
return prod;
}
int putere(int b)
{
if(b==0)
return 1;
else
{
int x=putere(b/2);
if(b%2==0)
return 1ll*(x*x)%n;
else
return 1ll*(x*x)%n*1ll*a%n;
}
}
int main()
{
cin>>a>>n;
int k=euler(n);
///(a la puterea k-1 )%n -inversul modular cautat
cout<<putere(k-1);
return 0;
}