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