Пожалуйста,помогите,информатика 11 класс)
1. Исполнитель Калькулятор имеет следующую систему команд:

1) прибавь 1;
2) умножь на 2.

С помощью первой из них исполнитель увеличивает число на экране на 2, с помощью второй — в 2 раза.

1) Выясните, сколько разных программ, преобразующих число 1 в число 20, можно составить для этого исполнителя.
2) Сколько среди них таких программ, у которых в качестве промежуточного результата обязательно получается число 15?
3) Сколько среди них таких программ, у которых в качестве промежуточного результата никогда не получается число 12?

Ответы

Ответ дал: DogDogGo
4

// Pascal ABC.NET
var

 ans1, ans2, ans3: Integer;

procedure rec1(k: Integer);

begin

 if k < 1 then

   exit;

 if k = 1 then begin

   Inc(ans1);

   exit;

 end;

 if k mod 2 = 0 then

   rec1(k div 2);

 rec1(k-1);

end;

procedure rec2(k: Integer; visited: Boolean);

begin

 if k < 1 then

   exit;

 if (k = 1) and visited then begin

   Inc(ans2);

   exit;

 end;

 if k mod 2 = 0 then

   rec2(k div 2, visited or (k = 15));

 rec2(k-1, visited or (k = 15));

end;

procedure rec3(k: Integer);

begin

 if (k < 1) or (k = 12) then

   exit;

 if k = 1 then begin

   Inc(ans3);

   exit;

 end;

 if k mod 2 = 0 then

   rec3(k div 2);

 rec3(k-1);

end;

begin

 ans1 := 0;

 ans2 := 0;

 ans3 := 0;

 rec1(20);

 rec2(20, false);

 rec3(20);

 WriteLn('Ответ на подзадачу 1: ', ans1);

 WriteLn('Ответ на подзадачу 2: ', ans2);

 WriteLn('Ответ на подзадачу 3: ', ans3);

end.


DogDogGo: P.S. Ответы: 60 26 40
faern2929: ответы поочередно на каждое задание? Спасибо большое!
Вас заинтересует