Предмет: Информатика, автор: risaclar123

Даны натуральные числа 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.

Выводит не наименьшее, а наибольшее, помогите пожалуйста исправить, праграмма написана на паскале если что даю оч много балов

Ответы

Автор ответа: raf1O5
1

Исправленный код программы

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


risaclar123: теперь выводит неправильный результат
raf1O5: А какие данные вы вводили?
Похожие вопросы
Предмет: История, автор: nikita228090909229
Предмет: Информатика, автор: Dan2288893
Предмет: Алгебра, автор: meliodasd526
Предмет: Математика, автор: ВикаГамова1