Технический форум

Технический форум (http://www.tehnari.ru/)
-   Delphi, Kylix and Pascal (http://www.tehnari.ru/f43/)
-   -   Задача на Паскале (http://www.tehnari.ru/f43/t51589/)

dima-baris 12.05.2011 22:39

Задача на Паскале
 
зарание спасибо большое!!
Задача: сколько можно купить быков,коров, телят, платя за быка 10 руб.,за корову 5 руб., а за телёнка 0.5 руб, если на 100 рублей надо купить сто голов скота.

её надо решить через цикл repeat!!

Vladimir_S 12.05.2011 23:29

Цитата:

Сообщение от dima-baris (Сообщение 519278)
зарание спасибо большое!!
Задача: сколько можно купить быков,коров, телят, платя за быка 10 руб.,за корову 5 руб., а за телёнка 0.5 руб, если на 100 рублей надо купить сто голов скота.

её надо решить через цикл repeat!!

Прежде всего, давайте решим задачу безо всякого Паскаля. Обозначим:
1. Ox - искомое число быков,
2. Cow - искомое число коров,
3. Calf - искомое число телят.
Имеем систему уравнений:
10*Ox+5*Cow+0.5*Calf=100
Ox+Cow+Calf=100
Чтобы работать исключительно с целыми числами, умножим обе части первого уравнения на 2:
20*Ox+10*Cow+Calf=200
Исключив телят, получим:
Cow=(100-19*Ox)/9
Вот это Диофантово уравнение (это когда решениями являются только целые числа) и надо решить. Легко убедиться, что единственная подходящая комбинация есть Ox=1 и Cow=9. Отсюда получаем Calf=90. Эти три числа удовлетворяют обоим уравнениям системы.
А теперь - программа, реализующая этот алгоритм:
Код:

var
 Ox,Cow,Calf:Byte;
 b:boolean;
BEGIN
 Ox:=0;
 b:=true;
 Repeat
  Repeat
  Inc(Ox);
  Until (((100-19*Ox) mod 9)=0) or (Ox=5);
  If ((100-19*Ox) mod 9)=0 then
  begin
    Cow:=(100-19*Ox) div 9;
    Calf:=100-(Ox+Cow);
    If (Ox*20+Cow*10+Calf)=200 then
    begin
      b:=false;
      Writeln('  Ox - ',Ox);
      Writeln(' Cow - ',Cow);
      Writeln('Calf - ',Calf);
    end;
  end;
 Until Ox=5;
 If b then WriteLn('The problem is unsolvable!');
 readln;
END.


dima-baris 12.05.2011 23:45

спасибо большое ещё раз!!!


Часовой пояс GMT +4, время: 21:37.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.