Pagini recente » Cod sursa (job #1725717) | Cod sursa (job #3236966) | Cod sursa (job #76802) | Cod sursa (job #764467) | Cod sursa (job #1263272)
#include <fstream>
#include <cstdio>
using namespace std;
ofstream g("inversmodular.out");
long a,b,c,r,cat,n,aux,i,j,x,y,ok,xa,ya;
long modul(long k)
{
if (k<0)
return -k;
return k;
}
long cmmdc(long a,long b)
{
long r=1;
while (r!=0)
{
r=a%b;
a=b;
b=r;
}
return a;
}
int main()
{
freopen("inversmodular.in","r",stdin);
scanf("%ld%ld",&x,&y);
a=x;
b=-y;
c=1;
if (b>a)
{
aux=a;
a=b;
b=aux;
ok=1;
}
if (b==0)
{
if (c%a==0)
g<<c/a<<'\n';
else
g<<"0\n";
}
else if (c%cmmdc(modul(a),modul(b))==0)
{
xa=1;ya=0;x=0;y=1;
while (b)
{
cat=a/b;
r=a%b;
aux=x;
x=xa-cat*x;
xa=aux;
aux=y;
y=ya-cat*y;
ya=aux;
a=b;
b=r;
}
if (ok==1)
{
aux=xa;
xa=ya;
ya=aux;
}
g<<xa*(c/a);
}
else
g<<"0\n";
g.close();
return 0;
}