Pagini recente » Cod sursa (job #1577385) | Cod sursa (job #87419) | Cod sursa (job #2539077) | Cod sursa (job #2178384) | Cod sursa (job #1459147)
#include <stdio.h>
#include <stdlib.h>
const char iname[] = "inversmodular.in";
const char oname[] = "inversmodular.out";
int main()
{
FILE *in = fopen(iname, "r");
FILE *out = fopen(oname, "w");
long long int r, a;
int n, p, mod;
fscanf(in, "%d %d ", &n, &mod);
p = mod - 2;
r = 1;
a = n;
while(p > 1)
{
if(1 & p)
{
r = (r * a)%mod;
a = (a * a)%mod;
p = (p-1)/2;
}
else
{
a = (a * a)%mod;
p = p / 2;
}
}
r = (r*a)%mod;
fprintf(out, "%lld", r);
return 0;
}