Cod sursa(job #2259536)

Utilizator raskyNichita Sincarenco rasky Data 13 octombrie 2018 14:04:41
Problema Invers modular Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <iostream>
#include <fstream>
using namespace std;
/* cmmdc(a,b)=d
    xa+yb=d;

    1. cmmdc(a,b)=cmmdc(b,a%b);
    2. cmmdc(a,0)=a;



    int f(int x)
    {
        if(x<3) return 1;
        else return f(x-1)+f(x-2);
    }
    */
    int cmmdc(int a, int b,int &x,int &y) //ALGORITMUL LUI EUCLID EXTINS
    {
    if(b==0)
    {   x=1;
        y=0;
        return a;
    }


    int d=cmmdc(b,a%b,x,y);

    int xn=y;
     y=x-y*(a/b);
     x=xn;

     return d;
    }
int main()
{
    ifstream cin("inversmodular.in");
    ofstream cout("inversmodular.out");
    int a, n, x, y;
    cin>>a>>n>>x>>y;
    cmmdc(a, n, x, y);
    while(x<0)
    {
        x= x+n;
    }
    cout << x%n;
    return 0;
}