У исполнителя Калькулятор две команды, которым присвоены номера: 1. прибавь 2 2. умножь...

0 голосов
255 просмотров

У исполнителя Калькулятор две команды, которым присвоены номера:
1. прибавь 2
2. умножь на 2
Сколько есть программ, которые число 1 преобразуют в число 24?


Информатика (22 баллов) | 255 просмотров
0

В смысле? Преобразуют в 24?

Дан 1 ответ
0 голосов

Ответ: 32

(1+2+2+2+2+2)*2+2
(1+2+2+2+2)*2+2+2+2
(1+2+2+2)*2+2+2+2+2+2
(1+2+2)*2+2+2+2+2+2+2+2
((1+2+2)*2+2)*2
((1+2+2)*2)*2+2+2
(1+2)*2+2+2+2+2+2+2+2+2+2
((1+2)*2+2+2+2)*2
((1+2)*2+2+2)*2+2+2
((1+2)*2+2)*2+2+2+2+2
((1+2)*2)*2+2+2+2+2+2+2
(((1+2)*2)*2)*2
(1)*2+2+2+2+2+2+2+2+2+2+2+2
((1)*2+2+2+2+2+2)*2
((1)*2+2+2+2+2)*2+2+2
((1)*2+2+2+2)*2+2+2+2+2
((1)*2+2+2)*2+2+2+2+2+2+2
(((1)*2+2+2)*2)*2
((1)*2+2)*2+2+2+2+2+2+2+2+2
(((1)*2+2)*2+2+2)*2
(((1)*2+2)*2+2)*2+2+2
(((1)*2+2)*2)*2+2+2+2+2
((1)*2)*2+2+2+2+2+2+2+2+2+2+2
(((1)*2)*2+2+2+2+2)*2
(((1)*2)*2+2+2+2)*2+2+2
(((1)*2)*2+2+2)*2+2+2+2+2
(((1)*2)*2+2)*2+2+2+2+2+2+2
((((1)*2)*2+2)*2)*2
(((1)*2)*2)*2+2+2+2+2+2+2+2+2
((((1)*2)*2)*2+2+2)*2
((((1)*2)*2)*2+2)*2+2+2
((((1)*2)*2)*2)*2+2+2+2+2

Var N : Integer;

Procedure GoGo(a : Integer; s : String);
Begin
  If a<=24 then<br>    If a=24 then
    Begin
      Inc(N);
      Writeln(s);
    end
      else
      Begin
        GoGo(a+2,s+'+2');
        GoGo(a*2,'('+s+')*2');
      end;
end;

Begin
  N:=0;
  GoGo(1,'1');
  Writeln('N = ',N);
end.


(5.1k баллов)