Главная Посты Курсы Связь О сайте

Разбор демоверсии ЕГЭ по информатике 2022 (16-21 Задание)



Продолжаем изучение демонстрационного варианта ЕГЭ по информатике 2022.


В этой статье разберём с 16-ого по 21 задание.


Источник задач: https://fipi.ru/ege/demoversii-specifikacii-kodifikatory#!/tab/151883967-5.


Желаю победы на ЕГЭ по информатике 2022!



Разбор демоверсии ЕГЭ по информатике 2022 (1-5 Задание)
Разбор демоверсии ЕГЭ по информатике 2022 (6-10 Задание)
Разбор демоверсии ЕГЭ по информатике 2022 (11-15 Задание)
Разбор демоверсии ЕГЭ по информатике 2022 (22-27 Задание)

Задание 16

Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями:


F(n) = 1 при n = 1;
F(n) = n + F(n − 1), если n чётно,
F(n) = 2 × F(n − 2), если n > 1 и при этом n нечётно.

Чему равно значение функции F(26)?



Решение:

Запрограммируем эту задачу на Python'е.


def F(n):
    if n==1: return 1
    if n%2==0: return n+F(n-1)
    if n>1 and n%2!=0: return 2*F(n-2)

print(F(26))

Формируем функцию F, в точности, как нам предоставили описание. И запускаем функцию с указанным параметром 26.


Проверить чётное ли число n или нет, можно, посмотрев остаток от деления n на 2.


Ответ: 4122

Смотреть 16 Задание на YouTube




Задание 17

В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от –10 000 до 10 000 включительно. Определите и запишите в ответе сначала количество пар элементов последовательности, в которых хотя бы одно число делится на 3, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности. Например, для последовательности из пяти элементов: 6; 2; 9; –3; 6 – ответ: 4 11




Решение:

Решим задачу на языке Python. Файл должен быть в той же папке, в которой сохранили программу (или нужно прописать полный путь до файла).


f=open('17.txt')

count=0
sm=0

n1=int(f.readline())

for s in f.readlines():
    n2=int(s)

    if n1%3==0 or n2%3==0:
        count=count+1
        sm=max(n1+n2, sm)
    
    n1=n2

print(count)
print(sm)

В начале подключаем файл. Заводим переменные count, sm, где будут храниться количество пар и наибольшая сумма.


Считываем в n1 из файла первое число для нашей пары. Затем, формируем цикл for, где в переменную s считывается очередная строчка из файла, начиная со второй (ведь первая уже считалась в n1). Т.е. n1 - первое число из пары, n2 - второе число из пары.


Проверяем с помощью условия, делится ли хотя бы одно число из пары на 3. Если да, то прибавляем единицу к счётчику count. Так же, если выполняется условие, в переменную sm записывается максимальное значение между старым значением переменной sm и суммой очередной пары. Т.е. в переменной sm будет записана максимальная сумма элементов всех пар, которые удовлетворяют условию задачи.


В конце цикла кладём значение n2 в переменную n1, и всё повторяется.


Ответ:
28021990


Смотреть 17 Задание на YouTube




Задание 18

Квадрат разлинован на N × N клеток (1 < N < 30). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо или вниз. По команде вправо Робот перемещается в соседнюю правую клетку, по команде вниз – в соседнюю нижнюю. Квадрат ограничен внешними стенами. Между соседними клетками квадрата также могут быть внутренние стены. Сквозь стену Робот пройти не может. Перед каждым запуском Робота в каждой клетке квадрата лежит монета достоинством от 1 до 100. Посетив клетку, Робот забирает монету с собой; это также относится к начальной и конечной клеткам маршрута Робота. Определите максимальную и минимальную денежные суммы, которые может собрать Робот, пройдя из левой верхней клетки в правую нижнюю. В ответе укажите два числа – сначала максимальную сумму, затем минимальную.

Исходные данные представляют собой электронную таблицу размером N × N, каждая ячейка которой соответствует клетке квадрата. Внутренние и внешние стены обозначены утолщенными линиями.

Пример входных данных:


1884
10113
13122
2356

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


38 22




Решение:

Открываем файл в программе Excel.


Выделим все ячейки с числами, нажмём "вырезать", используя контекстное меню. Вставим данные на 1 столбец вправо. Это делаем потому, что будем использовать для решения формулу, которая будет обращаться к ячейке слева.


Мысленно представим пространство на 1 строчку ниже, чем область, где находятся числа. Это пространство будет таким же по размерам, как и область с числами. В этом пространстве и будет наше решение.


ЕГЭ по информатике демоверсия 2022 - задание 18 (Решение)

Отметим особым цветом те ячейки, которые "спрятаны" от движения Робота стенками.


ЕГЭ по информатике демоверсия 2022 - задание 18 (Решение со стенками)

Для этих ячеек будем составлять другие формулы, в отличии от обычных ячеек.


Цвет ячейки можно поменять, нажав на кнопку "Цвет заливки" на главной вкладке программы.


Т.к. Робот направляется из левой верхней ячейки, то мы сначала и напишем формулу для этой ячейки. Пишем для ячейки B22:


=МАКС(B21;A22)+B1

Робот в любую ячейку может прийти либо сверху, либо слева. Для подсчёта максимального количества монет, мы должны выбрать максимальное предыдущее значение. Это и делаем формула. Плюс Робот должен взять монеты с текущей клетки.


Распространим формулу на всё пространство, не трогая закрашенные клетки.


ЕГЭ по информатике демоверсия 2022 - задание 18 (Распространяем формулу)

Получается такая картина:


ЕГЭ по информатике демоверсия 2022 - задание 18 (Распространяем формулу 2)

В ячейки для первой закрашенной области, Робот может попасть только сверху! Поэтому пишем формулу для ячейки H25:


=H24+H4

Распространяем формулу по всему закрашенному столбцу.


В ячейки для второй закрашенной области, Робот может попасть только слева! Поэтому пишем формулу для ячейки М39:


=L39+M18

Распространяем формулу по всей закрашенной строчке.


В правом нижнем углу нашего рабочего пространства получается максимальное количество монет, которое может собрать Робот. В ячейке U41 получается число 721.


Чтобы получить минимальную возможную сумму, в главной формуле функцию МАКС нужно заменить на МИН!


Удобно воспользоваться автоматической заменой через Ctrl+F.


ЕГЭ по информатике демоверсия 2022 - задание 18 (автоматическая замена)

Минимальная сумма равна 640.


Ответ:
721 640


Смотреть 16 Задание на YouTube


Задание 19

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один камень или увеличить количество камней в куче в два раза. Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней.

Игра завершается в тот момент, когда количество камней в куче становится не менее 29. Победителем считается игрок, сделавший последний ход, т.е. первым получивший кучу, в которой будет 29 или больше камней.

В начальный момент в куче было S камней, 1 ≤ S ≤ 28.

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

Укажите такое значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.



Решение:

Решим задачу с помощью шаблона на языке программирования Python. Если хотите ознакомится с аналитическим решением задач на теорию игр, можете посмотреть мои статьи по 19 Заданию, 20 Заданию, 21 Заданию. Но с помощью шаблонов на экзамене решать быстрее и легче.


Введём параметр p, который будет олицетворять позицию игры (ход).


Начальная позиция Ход Пети Ход Вани Ход Пети Ход Вани Ход Пети
p 1 2 3 4 5 6


def F(x, p):
    if x>=29 and p==3: return True
    if x<29 and p==3: return False
    if x>=29: return False

    if p%2==1:
        return F(x+1, p+1) and F(x*2, p+1)
    else:
         return F(x+1, p+1) or F(x*2, p+1)

for s in range(1, 29):
    if F(s, 1):
        print(s)

Заводим функцию F. Т.к. у нас одна куча, то она принимает параметры: x - количество камней в куче, p-позиция игры.


Дальше описываем победу. Если x>=29 и позиция равна 3 (1 Ход Вани), то возвращаем True, что означает победу.


Если, позиция уже равна 3, но камней меньше, чем должно быть для победы, то возвращаем False (проигрыш).


Третье условие. Если кто-то выиграл, но на первых двух условиях мы не вышли из функции, то, значит, выиграл не тот, кто нам нужен, следовательно, возвращаем Fasle.


Если мы не вышли на первых трёх условиях, то, значит, продолжаем прокручивать ходы, рекурсивно запускаем функцию F.


Для нечётных p (это ходы Вани), возвращаем разные ходы через and, т.к. он должен побеждать в любом случае. При этом увеличиваем на 1 значение p.


Для чётных p (это ходы Пети), возвращаем ходы через or.


В конце перебираем все возможные значения для s через цикл for, ищём те значения, которые подходят по условию задачи.


Ответ: 14

Смотреть 19-21 Задание на YouTube


Задание 20

Для игры, описанной в задании 19, найдите два таких значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:

− Петя не может выиграть за один ход;

− Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.

Найденные значения запишите в ответе в порядке возрастания.



Решение:

Задача точно такая же, как и в 19 задании, только теперь обязательно должен побежать Петя на своём втором ходу (p=4), при любой игре Вани.


Пишем тот же шаблон, немного отредактировав его.


def F(x, p):
    if x>=29 and p==4: return True
    if x<29 and p==4: return False
    if x>=29: return False

    if p%2==0:
        return F(x+1, p+1) and F(x*2, p+1)
    else:
         return F(x+1, p+1) or F(x*2, p+1)

for s in range(1, 29):
    if F(s, 1):
        print(s)

Получается 7 и 13.


Ответ:
7 13


Смотреть 19-21 Задание на YouTube


Задание 21

Для игры, описанной в задании 19, найдите значение S, при котором одновременно выполняются два условия:

− у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети;

− у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.

Если найдено несколько значений S, в ответе запишите минимальное из них.



Решение:

Опять используем прошлый шаблон, но немного модернизируем.


def F(x, p):
    if x>=29 and (p==3 or p==5): return True
    if x<29 and p==5: return False
    if x>=29: return False

    if p%2==1:
        return F(x+1, p+1) and F(x*2, p+1)
    else:
         return F(x+1, p+1) or F(x*2, p+1)


def F1(x, p):
    if x>=29 and p==3: return True
    if x<29 and p==3: return False
    if x>=29: return False

    if p%2==1:
        return F1(x+1, p+1) and F1(x*2, p+1)
    else:
         return F1(x+1, p+1) or F1(x*2, p+1)

for s in range(1, 29):
    if F(s, 1):
        print(s)

print()

for s in range(1, 29):
    if F1(s, 1):
        print(s)

Здесь Ваня должен выигрывать либо на первом своём ходе (p=3), либо на втором своём ходе (p=5).


Т.к. Ваня не должен гарантированно выиграть своим первым ходом, то мы создаём ещё одну функцию F1, похожую на основную функцию F, которая вычисляет, когда Ваня именно гарантированно выигрывает на своём первом ходе (p=3). И, затем, мы из тех чисел, которые получились в первой функции F, исключаем числа, которые получились во второй функции F1.


В первой функции получилось 12,14, а во второй 14. Получается ответ 12.


Ответ: 12

Смотреть 19-21 Задание на YouTube


Разбор демоверсии ЕГЭ по информатике 2022 (1-5 Задание)
Разбор демоверсии ЕГЭ по информатике 2022 (6-10 Задание)
Разбор демоверсии ЕГЭ по информатике 2022 (11-15 Задание)
Разбор демоверсии ЕГЭ по информатике 2022 (22-27 Задание)


05-09-2021 в 18:43:42





Похожая статья:

ЕГЭ по информатике 2021 - Задание 22 (Анализируем программу)

Здравствуйте! Будем тренироваться решать 22 задание из ЕГЭ по информат...

Категория: ЕГЭ  Подкатегория: -
Дата: 15-01-2018 в 16:47:34 4



Оставить коментарий:



Напишите email, чтобы получать сообщения о новых комментариях (необязательно):


Задача против робота. Расположите картинки горизонтально: