Цитата:
Сообщение от dima-baris
зарание спасибо большое!!
Задача: сколько можно купить быков,коров, телят, платя за быка 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.