Задача 32.
Старинная задача. Сколько можно купить быков, коров и телят, если плата за быка 10 рублей, за корову - 5 рублей, за теленка - полтинник (0,5 рубля), если на 100 рублей надо купить 100 голов скота.
{Обозначим через b - количество быков; k - количество коров; t- количество телят. После этого можно записать два уравнения: 10b+5k+0.5t=100 и b+k+t=100. Преобразуем их: 20b+10k+t=200 и b+k+t=100. На 100 рублей можно купить:
- не более 10 быков, т. е. 0<=b<=10
- не более 20 коров, т. е. 0<=k<=20
- не более 200 телят, т. е. 0<=t<=200. Таким образом, получаем:}
program prim3
uses crt;
var b, k, t: integer;
begin
clrscr;
for b:=0 to 10 do
for k:=0 to 20 do
for t:=0 to 200 do
if(20*b+10*k+t=200) and (b+k+t=100)
then
writeln('Быков ', b, 'коров ', k ' телят ', t);
readln;
end.
{Сколько раз будет проверяться условие в данной программе?
Значение переменной b изменяется 11 раз (от 0 до 10), для каждого ее значения переменная k изменяется 21 раз, а для каждого значения переменной k переменная изменяется 201 раз. Таким образом, условие будет проверяться 11*21*201 раз. Но если известно количество быков и коров, то количество телят можно вычислить по формуле t=100-(b+k) и цикл по переменной t исключается.}
program рriт3b;
uses crt;
var b, к, t: integer;
begin
clrscr;
for b:=0 to 10 do
for k: =0 to 20 do
begin
t:= 100-(b+k);
if(20*b+10*k+t=200) then
writeln('Быков ' ,b,,' коров ' , k,' телят' ,t);
end;
readln;
end.
{При этом решении условие проверяется 11*21 раз.}
|