Pagini recente » Cod sursa (job #1647748) | Cod sursa (job #2011480) | Cod sursa (job #2277064) | Cod sursa (job #834079) | Cod sursa (job #2148664)
#include <fstream>
using namespace std;
ifstream fin("inversmodular.in");
ofstream fout("inversmodular.out");
int a,n,exp;
long long rasp;
long long pow(int x,int y);
int euler(int nr);
int main()
{
fin>>a>>n;
exp=euler(n)-1;
rasp=pow(a,exp);
fout<<rasp%n<<'\n';
return 0;
}
int euler(int nr)
{
int p=n-1;
for(int i=2;i*i<=nr;i++)
if(!(nr%i))
{
p-=(p/i);
while(!(nr%i))
nr/=i;
}
return p;
}
long long pow(int x,int y)
{
if(y==0)
return 1;
long long t=pow(x,y/2)%n;
if(y%2==0)
return (t*t)%n;
else return (((t*t)%n)*x)%n;
}