Pagini recente » Cod sursa (job #440830) | Cod sursa (job #1953435) | Cod sursa (job #923838) | Cod sursa (job #238515) | Cod sursa (job #1788467)
#include<cstdio>
#include<math.h>
using namespace std;
long long n,a;
long long po(long long a,long long b)
{
long long sol=1;
for(;b;b>>=1)
{
if(b&1) sol=((sol%n)*(a%n))%n;
a=((a%n)*(a%n))%n;
}
return sol;
}
long long phi()
{
long long p = n;
long long q = p;
for(long i = 2; i<=sqrt(p); i++)
{
if(p % i == 0)
q = q * (i - 1) / i;
while(p % i == 0)
p = p / i;
}
if(p > 1)
q = q * (p - 1) / p;
return (long long)q;
}
long long inv(long long a,long long n)
{
long long x=phi();
x--;
return po(a,x);
}
int main()
{
freopen("inversmodular.in","r",stdin);
freopen("inversmodular.out","w",stdout);
scanf("%lld %lld",&a,&n);
printf("%lld ",inv(a,n));
}