扩展欧几里德

program exgcd;
var a,b,x,y:int64;
function safe(x:int64):int64;
begin
 safe:=((x+b) mod b+b) mod b;
end;
procedure ext_gcd(a,b:int64;var x,y:int64);
begin
 if b=0 then 
  begin
   x:=1;y:=0;
  end
 else 
  begin
   ext_gcd(b,a mod b,y,x);
   y:=safe(y-a div b*x);
  end;
end;
begin
 read(a,b);
 ext_gcd(a,b,x,y);
 write(safe(x));
end.
 

你可能感兴趣的:(扩展欧几里德)