Pagini recente » Cod sursa (job #393334) | Cod sursa (job #794085) | Cod sursa (job #1130195) | Cod sursa (job #682433) | Cod sursa (job #1348201)
#include <fstream>
#define NMAX 45000
using namespace std;
ifstream in("inversmodular.in");
ofstream out("inversmodular.out");
long long p1=1,p2=1,nr=1,a,n,cn,aux,c=1999999973;
long long functie(long long a,long b)
{
if(b==0){return 1;}
else if(b==1){return a%c;}
if(b%2==0)
{
long long aux;
aux=functie(a,b/2);
return /*(functie(a,b/2)*functie(a,b/2))%c*/(aux*aux)%c;
}
if(b%2==1)
{
return (functie(a,b-1)*a)%c;
}
}
int main()
{
in>>a>>n;
cn=n;
aux=2;
while(cn!=1)
{
int ok=0;
while(cn%aux==0)
{
ok=1;
cn=cn/aux;
}
if(ok==1) {p1=p1*(aux-1);p2=p2*aux;}
aux++;
}
nr=n*p1/p2;
out<<functie(a,nr-1)%n;
in.close();
out.close();
return 0;
}