Умение анализировать ход исполнения алгоритма · 26 заданий
- Задание №13№13
Исполнитель преобразует число, записанное на экране. У исполнителя есть три команды, которые обозначены латинскими буквами: A) Прибавить 1 B) Прибавит…
Анализ алгоритмов и исполнители
- Задание №13№13
Исполнитель преобразует число на экране. У исполнителя есть две команды, которые обозначены латинскими буквами: 1) Прибавить 1 2) Умножить на 2 Програ…
Анализ алгоритмов и исполнители
- Задание №13№13
Исполнитель преобразует число на экране. У исполнителя есть две команды, которым присвоены номера: 1) Прибавить 1 2) Умножить на 2 Первая команда увел…
Анализ алгоритмов и исполнители
- Задание №13№13
Исполнитель преобразует число на экране. У исполнителя есть три команды, которые обозначены латинскими буквами: А) Прибавить 5 В) Прибавить 4 С) Умнож…
Анализ алгоритмов и исполнители
- Задание №13№13
Исполнитель преобразует число на экране. У исполнителя есть три команды, которые обозначены латинскими буквами: А) Прибавить 3 В) Прибавить 4 С) Умнож…
Анализ алгоритмов и исполнители
- Задание №13№13
Исполнитель преобразует число на экране. У исполнителя есть три команды, которые обозначены латинскими буквами: А) Прибавить 2 В) Умножить на 2 С) Умн…
Анализ алгоритмов и исполнители
- Задание №13№13
Исполнитель преобразует число на экране. У исполнителя есть две команды, которые обозначены латинскими буквами: А) Вычти 1 В) Найди целую часть от дел…
Анализ алгоритмов и исполнители
- Задание №13№13
Исполнитель преобразует число на экране. У исполнителя есть три команды, которые обозначены латинскими буквами: А) Прибавить 2 В) Умножить на 2 С) Умн…
Анализ алгоритмов и исполнители
- Задание №13№13
Исполнитель преобразует число на экране. У исполнителя есть две команды, которые обозначены латинскими буквами: А) Вычти 1 В) Найди целую часть от дел…
Анализ алгоритмов и исполнители
- Задание №13№13
Исполнитель преобразует число на экране. У исполнителя есть две команды, которые обозначены латинскими буквами: А) Прибавить 2 В) Прибавить 10 Первая…
Анализ алгоритмов и исполнители
- Задание №13№13
Исполнитель преобразует число на экране. У исполнителя есть две команды, которые обозначены латинскими буквами: А) Прибавить 2 В) Прибавить 10 Первая…
Анализ алгоритмов и исполнители
- Задание №13№13
Исполнитель преобразует число на экране. У исполнителя есть две команды, которые обозначены латинскими буквами: А) Прибавить 2 В) Прибавить 7 Первая к…
Анализ алгоритмов и исполнители
Исполнитель преобразует число на экране. У исполнителя есть две команды, которые обозначены латинскими буквами:
А) Прибавить 2
В) Прибавить 7
Первая команда увеличивает число на экране на 2, вторая увеличивает это число на 7. Программа для исполнителя — это последовательность команд. Сколько существует программ, которые число 7 преобразуют в число 51?
Правильный ответ
639
Пояснение
Решение:
Команда А увеличивает число на 2, команда В — на 7; порядок команд на итоговое число не влияет, важно лишь, сколько раз использована каждая. Всего надо прибавить 51−7=44. Если команда А использована n раз, а команда В — k раз, то
2n+7k=44.
Отсюда подходят только k=0,2,4,6 (при остальных k остаток 44−7k не делится на 2 нацело или отрицателен).
Программа — это последовательность команд, поэтому при фиксированных n и k количество программ равно числу способов расставить k команд В среди всех n+k команд, то есть Cn+kk.
| k — команд В | n — команд А | Количество программ Cn+kk |
|---|---|---|
| 0 | 22 | C220=1 |
| 2 | 15 | C172=136 |
| 4 | 8 | C124=495 |
| 6 | 1 | C76=7 |
Складываем: 1+136+495+7=639.
Тот же результат даёт короткая программа:
from functools import lru_cache
@lru_cache(None)
def f(x, y): # сколько программ переводят число x в число y
if x == y:
return 1
if x > y:
return 0 # перескочили - назад команд нет
s = 0
for z in (x + 2, x + 7):
s += f(z, y)
return s
print(f(7, 51))
Ответ: 639