Cod sursa(job #395878)
| Utilizator | Data | 13 februarie 2010 22:19:34 | |
|---|---|---|---|
| Problema | Invers modular | Scor | 100 |
| Compilator | fpc | Status | done |
| Runda | Arhiva educationala | Marime | 0.5 kb |
Program invmod;
var A,N, d,x,y : longint;
fin,fout : text;
Procedure cmmdc(a,b : longint; var d,x,y : longint);
var x0,y0 : longint;
begin
if b=0 then
begin
d:=a;
x:=1;
y:=0;
end
else
begin
cmmdc(b,a mod b,d,x0,y0);
x:=y0;
y:=x0-(a div b)*y0;
end;
end;
begin
assign(fin,'inversmodular.in');
reset(fin);
readln(fin,A,N);
close(fin);
cmmdc(A,N,d,x,y);
if x<0 then
while x<0 do
x:=x+N;
assign(fout,'inversmodular.out');
rewrite(fout);
writeln(fout,x);
close(fout);
end.
