Pagini recente » Cod sursa (job #1424537) | Cod sursa (job #3246664) | Cod sursa (job #431814) | Cod sursa (job #2610892) | Cod sursa (job #1649493)
#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, copy=n, crt=1;
for(long long i=1; i<=pow; i++){
if(i&pow) crt = (crt*copy)%m;
copy = (copy * copy) % m;
}
printf("%lld\n", crt);
return 0;
}