Var
hay:longint; { количество стогов сена }
eaten:longint; { количество съеденных стогов }
procedure Eat(var n:longint);
{ съесть 4 стога }
begin n:=n-4; eaten:=eaten+4 end;
procedure Sheep(n:longint);
{ овечка, которой передано n стогов сена }
begin
if n>=4 then begin
if (n mod 5)=0 then begin
n:=n div 5;
Sheep(n);
Sheep(3*n)
end
else begin
Eat(n);
Sheep(n)
end
end
end;
begin
Readln(hay);
eaten:=0;
Sheep(hay);
Writeln(eaten)
end.
<em><u>Тестовое решение:</u></em>
29
8
Var a,b,k:integer;
begin
writeln('a, b:');
readln(a,b);
k:=0;
while a<>b do
begin
k:=k+1;
if a>b
then begin writeln(k,': ',b,'*',b); a:=a-b; end
else begin writeln(k,': ',a,'*',a); b:=b-a; end;
end;
k:=k+1;
writeln(k,': ',a,'*',a);
writeln('k = ',k);
end.
Пример:
a, b:
3 8
1: 3*3
2: 3*3
3: 2*2
4: 1*1
5: 1*1
k = 5
На паскале
---
uses crt;
var a,b,max: integer;
begin
writeln('Вводите последовательность. Окончание последовательности - 0.');
readln(a);
max:=a;
while a<>0 do begin
if (a>max) then max:=a;
readln(a);
end;
writeln('Наибольшее число последовательности: ',max);
<span>end.</span>
<em>// PascalABC.NET 3.2, сборка 1341 от 20.11.2016</em>
begin
var a:=ArrRandom(7,-20,20); a.Println;
a:=a.Select(x->abs(x)).ToArray; a.Println
end.
Пример
-9 17 6 1 20 9 -14
9 17 6 1 20 9 14
===== PascalABC.NET =====
function F(x: real) := x - 1 / (3 + Sin(3.6 * x));
begin
var (a, b, eps) := (0.0, 0.85, 1e-5);
var x: real;
while Abs(F(a) - F(b)) >= eps do
begin
x := (a + b) / 2;
var y := F(x);
Writeln('Интервал (', a, ',', b, '), x = ', x, ', y =', y);
if Sign(y) = Sign(F(a)) then
a := x
else
b := x
end;
x := (a + b) / 2;
Writeln('Решение: х = ', x, ', y = ', F(x))
end.