Cod sursa(job #2475238)
Utilizator | Data | 16 octombrie 2019 16:29:18 | |
---|---|---|---|
Problema | Invers modular | Scor | 0 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.53 kb |
#include <iostream>
using namespace std;
int euclid(int a, int b, int c, int &x, int &y)
{
int q[50],r,x0,y0,pas=0;
while(b)
{
q[++pas]=a/b;
r=a%b;
a=b;
b=r;
}
if(c%a)
{
x=y=0;
return;
}
x=x0=c/a;
y=y0=0;
while(pas)
{
x=y0;
y=x0-q[pas--]*y0;
x0=x;
y0=y;
}
}
int main()
{
int a,x,y,b;
cin>>a>>b;
euclid(a,b,1,x,y);
x=(b+x%b)%b;
cout<<x;
return 0;
}