Pagini recente » Cod sursa (job #2983546) | Cod sursa (job #2853520) | Cod sursa (job #1641828) | Cod sursa (job #574057) | Cod sursa (job #1922931)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("inversmodular.in");
ofstream t("inversmodular.out");
int a,n;
int64_t phi(int64_t target){
int phi=n;
for(int i=2;1LL*i*i<=n;i++)
if(n%i==0){
phi=(phi/i)*(i-1);
for(;n%i==0;n/=i);
}
if(n>1) phi=(phi/n)*(n-1);
return phi;
}
int64_t lgput(int64_t base,int64_t exponent){
int64_t x=1;
for (;exponent;exponent>>=1){
if (exponent&1)
x=(x*base)%n;
base=(base*base)%n;
}
return x;
}
int main()
{
f>>a>>n;
t<<lgput(a,phi(n)-1);
return 0;
}