Cod sursa(job #1459146)
| Utilizator | Data | 9 iulie 2015 11:22:14 | |
|---|---|---|---|
| Problema | Invers modular | Scor | 0 |
| Compilator | c | Status | done |
| Runda | Arhiva educationala | Marime | 0.64 kb |
#include <stdio.h>
#include <stdlib.h>
const char iname[] = "modulo.in";
const char oname[] = "modulo.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;
}
