Pagini recente » Cod sursa (job #2253326) | Cod sursa (job #1842647) | Cod sursa (job #827726) | Cod sursa (job #733435) | Cod sursa (job #2176667)
#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;
}