Pagini recente » Borderou de evaluare (job #1365665) | Borderou de evaluare (job #209398) | Borderou de evaluare (job #2933182) | Cod sursa (job #300701) | Cod sursa (job #2860475)
#include <fstream>
using namespace std;
ifstream f("inversmodular.in");
ofstream g("inversmodular.out");
long long a,n,p=1,M,m,i;
int main()
{
f>>a>>n;
M=m=n;
for(i=2;i*i<=m;i++)
{
if(m%i==0)
{
while(m%i==0)
m=m/i;
n=n/i*(i-1);
}
}
if(m!=1)
n=n/m*(m-1);
n--;
while(n)
{
if(n%2==1)
p=p*a%M;
a=a*a%M;
n=n/2;
}
g<<p;
return 0;
}