Cod sursa(job #764804)

Utilizator ioana26Ioana Andronescu ioana26 Data 6 iulie 2012 12:34:05
Problema Invers modular Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.65 kb
/*
Invers modular.
*/

#include <stdio.h>
#include <stdlib.h>

int a, n;
int invers;

void euclid_extins (int a, int b, int *x, int *y) {
    if (b == 0) {
        *x = 1;
        *y = 0;
        return;
    }
    int x0, y0;
    euclid_extins(b, a % b, &x0, &y0);
    *x = y0;
    *y = x0 - (a / b) * y0;
}

void invers_modular () {
    invers = 0;
    int x;
    euclid_extins(a, n, &invers, &x);
    if (invers < 0)
        invers += (invers / n + 1) * n;
}

int main () {
    freopen("inversmodular.in", "r", stdin);
    freopen("inversmodular.out", "w", stdout);

    scanf("%d %d", &a, &n);
    invers_modular();
    printf("%d\n", invers);
    return 0;
}