Информатика · тема 5 из 13 · ОГЭ № 5–6 · ЕГЭ № 5, 12, 19–21, 23

Алгоритмы, исполнители и игры

Разбор алгоритмов «по шагам»: построение чисел по правилам, исполнители Редактор и Калькулятор, подсчёт программ и выигрышные стратегии в играх.

25 мин чтенияОГЭЕГЭ15 заданий

Коротко

главное за 30 секунд
  1. Выполняйте алгоритм строго по шагам, записывая промежуточные значения
  2. Количество программ: K(x) = K(x−1) + … — динамическое программирование «слева направо»
  3. Если программа проходит через промежуточное число — перемножьте числа программ на участках
  4. Игра: позиция проигрышная, если все ходы ведут в выигрышные; выигрышная — если есть ход в проигрышную
  5. Сначала находим позиции, где победа за один ход, затем за два и т. д.

Алгоритм построения числа

В заданиях 5 из числа $N$ строят новое число по правилам: переводят в двоичную запись, дописывают биты, снова переводят в десятичную. Нужно найти наименьшее или наибольшее $N$ с заданным результатом.

Пример. К двоичной записи $N$ справа дописывают 0, если число единиц чётно, иначе 1; операцию повторяют дважды к получающейся записи. Результат — двоичная запись числа $R$. При каком наименьшем $N$ получится $R > 40$?

$N=10 = 1010_2$: единиц две (чётно) → $10100$; единиц две → $101000_2 = 40$, не подходит. $N=11 = 1011_2$: единиц три → $10111$; единиц четыре → $101110_2 = 46 > 40$. Ответ: 11.

Перебор в Python занимает 5 строк: for N in range(1, 1000) — построить строку, вычислить $R$, вывести первое подходящее. Но на бумаге тоже быстро: увеличивайте $N$ и следите за длиной записи.
действие 1действие 2следованиеусловиеданетдействиедействиеветвлениеусловиетело циклацикл
Рис. 1. Три базовые конструкции алгоритма: следование, ветвление, цикл

Исполнители: Редактор, Калькулятор, Чертёжник

Редактор заменяет подстроки: заменить(v, w) меняет первое слева вхождение $v$ на $w$; нашлось(v) проверяет наличие. Выполняйте замены буквально, каждый раз пересматривая строку заново.

Пример. Строка из 63 единиц. Программа: пока нашлось(111) заменить(111, 2). Что получится?

Каждая замена уменьшает длину на 2 и не создаёт новых «111»: из 63 единиц получится 21 двойка: 222…2.

Калькулятор имеет команды вроде «+1», «+3», «×2». Задача «сколько программ переводят число $a$ в $b$» решается таблицей:

$K(a) = 1$, а для $x > a$: $K(x) = K(x-1) + K(x-3) + [x \text{ чётное}] \cdot K(x/2)$ — суммируем по всем командам, приводящим в $x$.

Если есть требование «траектория содержит число $m$», ответ — $K(a \to m)\cdot K(m \to b)$.

Ловушка. Команда «×2» подходит для $x$ только если $x$ чётно. Забыв условие, получите лишние программы.
Проверь себя. Команды «+2» и «×3». Сколько программ переводят число 2 в число 20?

Ответ: 5

x12345678K(x)122446610K(8) = K(7) + K(4) = 6 + 4 = 10
Рис. 2. Число программ Калькулятора (+1 и ×2) из 1 в x: K(x) = K(x − 1) + K(x/2), если x чётно

Игры: выигрышные и проигрышные позиции

Двое ходят по очереди; в куче $S$ камней; ходы: «+1», «+3», «×2»; побеждает тот, после чьего хода в куче станет не меньше 40 камней. Позиции классифицируют:

  • Выигрышная — есть ход, после которого выиграет ходящий (сразу или потому, что соперник окажется в проигрышной позиции).
  • Проигрышная — любой ход даёт сопернику выигрышную позицию.

Позиции $S \ge 20$ выигрышны за один ход: $S\cdot 2 \ge 40$. Значит, если после хода Пети куча $\ge 20$ — Ваня выигрывает первым ходом. Проигрышная для ходящего позиция $S=19$: любой из ходов даёт 20, 22 или 38 — Ваня побеждает следующим ходом.

В заданиях 19–21 идём от конца: сначала множество «победа за 1 ход», затем «проигрыш за 2 хода», «победа за 3» и т. д. Типичные вопросы: наибольшее $S$, при котором Ваня выигрывает первым ходом; значения $S$, при которых Петя выигрывает вторым ходом.
0П1В2В3П4В5В6П7В8ВВ — выигрышная (есть ход в проигрышную позицию)П — проигрышная (все ходы ведут в выигрышные)число камней в куче — над клеткой
Рис. 3. Игра «брать 1 или 2 камня, кто не может ходить — проигрывает»: проигрышные позиции — кратные 3
Практика

Закрепите тему: 15 заданий для ОГЭ и ЕГЭ

От простых к сложным: базовый уровень — 3, повышенный — 8, высокий — 4. Мгновенная проверка, подсказки, подробные решения и тренажёр ошибок.

Решать задания по теме Флеш-карточки