Cod sursa(job #2176667)

Utilizator VasilcoiuAnaVasilcoiu Ana VasilcoiuAna Data 17 martie 2018 21:50:50
Problema Invers modular Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <iostream>
#include <fstream>
using namespace std;

void euclid_extins(int a,int b,int c,int &x,int &y)
{///presupunem ca apelam aceasta functzie DOAR daca shtim sigur ca avem solutzie, altfel da eronat
    if(b==0)
            {
                x=c/a;
                y=0;
            }
    else
    {
        int q=a/b;///calculez citurile in variabila locala q pt. ca se le am
            ///shi atunci cind revenim
        euclid_extins(b,a%b,c,x,y);
        ///pe baza lui x shi y ii calculez pe cei noi shi apoi ii atribui TOT pt. x,y
        int xnou=y;
        int ynou=x-q*y;
        x=xnou;
        y=ynou;
    }
}
int cmmdc(int a,int b)
{
    int r;
    while(b){r=a%b;a=b;b=r;}
    return a;
}

int main()
{
    int a,n,d,x,y;
    ifstream fin("inversmodular.in");
    ofstream fout("inversmodular.out");
    fin>>a>>n;
    d=cmmdc(a,n);
    if(d!=1)fout<<0;
    else
    {
        euclid_extins(a,n,1,x,y);
        x=(x%n+n)%n;
        fout<<x;
    }
    return 0;
}