Cod sursa(job #381025)
Utilizator | Data | 8 ianuarie 2010 16:36:03 | |
---|---|---|---|
Problema | Invers modular | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.36 kb |
#include <stdio.h>
#include <math.h>
long a, b, prod, i;
int main() {
freopen("inversmodular.in", "r", stdin);
freopen("inversmodular.out", "w", stdout);
scanf("%ld %ld", &a, &b);
prod = 1;
for (i = 0; (1 << i) <= (b - 2); ++i) {
if (((1 << i) & b) > 0) {
prod = prod * a;
}
a = a * a;
}
printf("%ld\n", prod % b);
return 0;
}