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

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

Ответы 3

  • теперь выводит неправильный результат
  • А какие данные вы вводили?
    • Автор:

      shepard
    • 5 лет назад
    • 0
  • Исправленный код программы

    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

    • Автор:

      knight
    • 5 лет назад
    • 0
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years