Pagini recente » Cod sursa (job #1533903) | Cod sursa (job #470587) | Cod sursa (job #640269) | Cod sursa (job #397910) | Cod sursa (job #2558065)
#include <fstream>
#include <iostream>
#include <cstring>
using namespace std;
#define MAX 100005
ifstream fin("inversmodular.in");
ofstream fout("inversmodular.out");
int n,a,x,tot,aa,d=2,k,i,sol=1;
int main()
{
ios_base::sync_with_stdio(false);
fin >> a >> n;
aa=n;
tot=n;
while(d*d<=aa)
{
if(aa%d==0)
{
while(aa%d==0)
aa/=d;
tot/=d;
tot*=d-1;
}
d++;
}
if(aa>1)
tot/=aa,
tot*=aa-1;
tot--;
for (i=0;(1<<i)<=tot;++i)
{
if (((1<<i)&tot)>0)
sol=(sol*a)%n;
a=(a*a)%n;
}
fout << sol;
return 0;
}