1 бочка = 3 галлона
2 бочка = 5 галлонов
Набираем во 2 бочку [0:5]
Переливаем из 2 в 1 бочку [3:2]
Выливаем из 1 бочки [0:2]
Переливаем из 2 в 1 бочку [2:0]
Набираем во 2 бочку [2:5]
Переливаем из 2 в 1 бочку [3:4]
Выливаем из 1 бочки [0:4]
Теперь у нас во второй бочку 4 галлона
<h2>Уточнение</h2>
Если в выражении z:= (z + x/2)/2 всё-таки сначала высчитывается (z + x), а потом делится на 4, то ответ будет другой.
Но также влияет на ответ то, какой тип у x и z. Если они оба int, то дробная часть отбрасывается и в ответе получится также, если же тип double или float, то ответ будет другим.
<h2>Ответ</h2>
x = 39
z = 1, i = 0
z = (z + x/2)/2 = (1 + 39/2)/2 = 10.25
i = 0 + 1 = 1
1 < 4 - да
...
z = (10.25 + 39/2)/2 = 14.87500
i = 2
2 < 4 - да
...
z = (14.87500 + 39/2)/2 = 17.1875
i = 3
3 < 4 - да
...
z = (17.1875 + 39/2)/2 = 18.34375
i = 4
4 < 4 нет
<h3>z = 18.34375</h3>
Program n1;
var x,y: real;
begin
readln(x,y);
if y=3*x-2 then write('лежит')
else write('не лежит');
end.
//PascalABC.NET
//Версия 3.3, сборка 1627
begin
var x:=ReadReal;
if x<=0 then write(0) else if x>1 then write(x**4) else write(x);
end.