Уисполнителя калькулятор две команды, которым присвоены номера: 1. прибавь 1 2. прибавь 2 3. умножь на 4 сколько есть программ, которые число 1 преобразуют в число 13? ответ обоснуйте.
Procedure Go(n : Integer; S : String); Begin If n=13 then Begin Writeln(S); Inc(k); end else If n<13 then Begin Go(n+1,S+'1'); Go(n+2,S+'2'); Go(n*4,S+'3'); end; end;
Begin k:=0; Go(1,''); Writeln('Всего вариантов: ',k); end.
Обоснование:
Var k : Integer;
Procedure Go(n : Integer; S : String);
Begin
If n=13 then
Begin
Writeln(S);
Inc(k);
end
else
If n<13 then
Begin
Go(n+1,S+'1');
Go(n+2,S+'2');
Go(n*4,S+'3');
end;
end;
Begin
k:=0;
Go(1,'');
Writeln('Всего вариантов: ',k);
end.