Cod sursa(job #1200455)
Utilizator | Serbanescu Andrei Victor Ratheba | Data | 22 iunie 2014 15:12:19 |
---|---|---|---|
Problema | Invers modular | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.51 kb |
#include <cstdio>
using namespace std;
int euclid(int a, int b, int &x, int &y);
int main()
{
freopen("inversmodular.in","r",stdin);
freopen("inversmodular.out","w",stdout);
int a, b, sol, x, y;
scanf("%d%d",&a,&b);
sol=euclid(a, b, x, y);
while(x<0) x+=b;
printf("%d",x);
}
int euclid(int a, int b, int &x, int &y)
{
if(b==0)
{
x=1; y=0;
return a;
}
int d, x0, y0;
d=euclid(b, a%b, x0, y0);
x=y0;
y=x0-y0*a/b;
return d;
}