1. Главная
  2. Библиотека
  3. Высшая математика
  4. Антон и Борис увлечены новой игрой, суть которой заключ...
Решение задачи на тему

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

  • Высшая математика
  • #Дискретная математика
  • #Математическая логика
Антон и Борис увлечены новой игрой, суть которой заключается в следующем. Один из игроков, по жребию, становится ведущим. Ведущий придумывает четырёхзначное слово (возможно, с нулями в старших разрядах) и передаёт ход другому игроку. В дальнейшем игроки

Условие:

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


Выполняя ход, игрок может увеличить одну из цифр текущего числа на 1, 2 или 3. Естественно, новое значение этой цифры не должно превосходить девяти. Игрок, получивший в результате хода число 9999, проигрывает.


Определите, выиграет ли ведущий игрок при заданном начальном числе, если в процессе игры ни Антон, ни Борис не будут совершать ошибок.


Входные данные
В первой строке записано количество подтестов Q (3 ≤ Q ≤ 10). В каждой из последующих строк записано одно число в диапазоне от 1 до 9998 — очередное придуманное ведущим игроком число. Незначащие нули в этих числах не записываются.


Для 10 % тестов во всех их подтестах десятичная запись придуманных чисел содержит три девятки.


Выходные данные
Выведите строку из Q символов. В очередной позиции этой строки записывается символ 'Y', если ведущий игрок выигрывает, и 'N' — в противном случае.


Решить задачу на Python 3.8

Решение:

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

Шаги решения:


1. Определение проигрышной позиции: Игрок, который получает число 9999, проигрывает. Это значит, что 9999 — это проигрышная позиция.

2. Определение выигрышной позиции: Если игрок может сделать ход, который приведет противника в проигрышную позицию, то текущее состояние является выигрышной позицией.

3. Анализ возможных ходов: Игрок может увеличить любую из четырёх цифр на 1, 2 или 3, при этом не превышая 9. Это означает, что для каждого числа мы можем проверить, какие числа могут быть достигнуты и являются ли они проигрышными.

4. Динамическое программирование: Мы можем использовать массив, где индекс будет представлять число, а значение будет указывать, является ли это число выигрышной (True) или проигрышной (False) позицией.

5. Заполнение массива: Начнем с 9999 (проигрышная позиция) и будем заполнять массив для всех чисел от 9998 до 0, проверяя, можно ли сделать ход в проигрышную позицию.

Реализация на Python:


- Мы создаем массив , который будет хранить информацию о том, является ли позиция выигрышной. - Заполняем массив, начиная с 9999 и двигаясь к 0, проверяя все возможные ходы. - Для каждого числа проверяем, можно ли сделать ход в проигрышную позицию. Если да, то текущая позиция считается выигрышной. - В конце выводим результаты для всех тестов. Таким образом, мы можем определить, выиграет ли ведущий игрок при заданном начальном числе.

Не нашел нужную задачу?

Воспользуйся поиском

Выбери предмет