Pagini recente » Cod sursa (job #2861229) | Cod sursa (job #1122973) | Cod sursa (job #1907161) | Cod sursa (job #1716558) | Cod sursa (job #1649520)
#include <stdio.h>
using namespace std;
long long N, M;
long long phi(long long n){
long long copy = n;
for(long long i=2; i*i<=n; i++)
if(n%i==0)
{
while(n%i==0) n=n/i;
copy = (copy/i) * (i-1);
}
if(n!=1) copy = (copy/n)*(n-1);
return copy;
}
int main()
{
freopen("inversmodular.in", "r", stdin);
freopen("inversmodular.out", "w", stdout);
scanf("%lld %lld", &N, &M);
long long pow = phi(M) - 1;
long long copy = N;
long long crt = 1;
for(long long p = 1;p <= pow;p <<= 1)
{
if (p & pow) crt = (crt * copy) % M;
copy = (copy * copy) % M;
}
printf("%lld\n",crt);
return 0;
}