Исполнитель Увеличитель345 преобразует число, записанное на экране. У исполнителя
три команды, которым присвоены номера:
1. Прибавь 3
2. Прибавь 4
3. Прибавь 5
Первая из них увеличивает число на экране на 3, вторая увеличивает это число на 4,
а третья – на 5. Программа для исполнителя Увеличитель345 – это последовательность
команд.
Определите, сколько существует программ, преобразующих число 22 в число 80.
Задачу можно решать как с помощью электронной таблицы, так и путем составления
программы.

//Ruby 22

def factorial(n)
    f = 1;
    for i in 1..n; f *= i; end;
    f
end

n=0

for i in 0..80/3
    for j in 0..80/4
        for k in 0..80/5
            if 22+3*i+4*j+5*k==80
                nn = factorial(i+j+k)/factorial(i)/factorial(j)/factorial(k)
                n+=nn
                p [i,j,k]

            end
        end
    end
end
p n

Как работает программа:
Сначала мы находим способы получить из 22 число 80. Для удобства шаги мы упорядочеваем: сначала прибавляем тройки, потом четверки, потом пятерки. Ищем все возможные наборы (i, j, k) которые отвечают равенству 22 + 3i + 4j + 5k = 80. Для каждого такого набора высчитываем кол-во перестановок с повторениями и суммируем их. 
Ответ 3174448



Оцени ответ
Подпишись на наш канал в телеграм. Там мы даём ещё больше полезной информации для школьников!

Загрузить картинку