Ответ:
Рассмотрим действия в обратном порядке: вместо вычитания 2 прибавляем 2, вместо вычитания 3 прибавляем 3, а вместо деления на 3 умножаем на 3. Нужно посчитать программы, переводящие 3 в 20 командами «прибавить 2», «прибавить 3» и «умножить на 3».
Обозначим через \(f(n)\) число способов получить число \(n\) из 3. Начальное значение: \(f(3)=1\). Для остальных чисел учитываем, каким обратным действием можно прийти к ним:
\(f(n)=f(n-2)+f(n-3)\), а если \(n\) делится на 3, добавляем также \(f(n/3)\).
Последовательно получаем: \(f(5)=1, f(6)=1, f(7)=1, f(8)=2, f(9)=3, f(10)=3, f(11)=5, f(12)=6, f(13)=8, f(14)=11, f(15)=15, f(16)=19, f(17)=26, f(18)=35, f(19)=45, f(20)=61\).
Ответ: 61 программа.
