Даны натуральные числа a, b, c. Если уравнение ax+by=c имеет решения в целых числах, то выберите то решение, в котором число x имеет наименьшее неотрицательное значение и выведите это решение (два числа x и y через один пробел).
Var
a,b,c,x,y,k,l,j,v,d:integer;
Begin
read(a);
read(b);
read(c);
k:=0-c;
d:=1;
For x:=1 to c do
For y:=k to c do
begin
If a*x+b*y=c then
If d<=x then begin
d:=x;
v:=y;
end;
end; Writeln(d,' ',v);
end.
Выводит не наименьшее, а наибольшее, помогите пожалуйста исправить, праграмма написана на паскале если что даю оч много балов
Answers & Comments
Исправленный код программы
Var
a,b,c,x,y,k,l,j,v,d:integer;
Begin
read(a);
read(b);
read(c);
k:=0-c;
d:=1;
For x:=1 to c do
For y:=k to c do
begin
If a*x+b*y=c then
If d>=x then begin
d:=x;
v:=y;
end;
end; Writeln(d,' ',v);
end.
Объяснение
d это переменная, обозначающая минимальное значение x
ошибка была в строке If d<=x then begin
Если x меньше а не больше минимального, то минимальному должно присваиваться значение x
Исправленная строка If d>=x then begin