Cod sursa(job #1015696)

Utilizator sziliMandici Szilard szili Data 24 octombrie 2013 23:20:44
Problema Invers modular Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <iostream>
#include <stdio.h>
#include <stdlib.h>

using namespace std;

int extendedEuclidean(int a, int b, int *x, int *y){

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

        return d;
    }
}

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

    int a,n;

    scanf("%d %d", &a, &n);

    int x0, y0;
    int d = extendedEuclidean(a,n, &x0, &y0);

    int X = x0/d;

    while (X <= 0){
        X += n;
    }

    printf("%d", X);

    return 0;
}