Для кодирования некоторой последовательности, состоящей из букв И, К, Л, М, Н, решили использовать неравномерный двоичный код, удовлетворяющий условию Фано. Для буквы Н использовали кодовое слово 0, для буквы К – кодовое слово 10. Какова наименьшая возможная суммарная длина всех пяти кодовых слов?
Примечание. Условие Фано означает, что никакое кодовое слово не является началом другого кодового слова. Это обеспечивает возможность однозначной расшифровки закодированных сообщений.
Спрятать решение
Решение.
Нельзя использовать кодовые слова, которые начинаются с 0 или с 10. 11 также не можем использовать, поскольку тогда мы больше не сможем взять никакое другое кодовое слово, а нам их нужно пять. Поэтому берём трёхзначное 110. 111 опять же не можем использовать, потому что понадобиться ещё одно кодовое слово, а вместе с этим не останется больше свободных. Теперь осталось взять всего два слова и это будут 1110 и 1111. Итого имеем 0, 10, 110, 1110 и 1111 — 14 символов.
Ответ: 14.
Тренировочный вариант и ответы с решением пробник ЕГЭ 2023 по информатике 11 класс ФИПИ состоит из 27 заданий с кратким ответом, выполняемых с помощью компьютера. На выполнение экзаменационной работы по информатике и ИКТ отводится 3 часа 55 минут (235 минут).
Скачать тренировочный вариант с ответами
Скачать файлы для варианта
Другие тренировочные варианты
ege_2023_informatika_23_02
Разбор варианта. ЕГЭ по Информатике 2023
1. На рисунке справа схема дорог Н-ского района изображена в виде графа, в таблице содержатся сведения о длинах этих дорог (в километрах). Так как таблицу и схему рисовали независимо друг от друга, то нумерация населённых пунктов в таблице никак не связана с буквенными обозначениями на графе. В таблице в левом столбце указаны номера пунктов, откуда совершается движение, в первой строке – куда. Определите минимально возможную длину пути BDE. Передвигаться можно только по указанным дорогам.
2. Логическая функция F задаётся выражением w ∨ (y → z) ∧ x. На рисунке приведён частично заполненный фрагмент таблицы истинности функции F, содержащий неповторяющиеся строки. Определите, какой столбец в таблице каждой переменной в выражении. В ответе напишите буквы x, y, z, w в том порядке, в котором идут соответствующие им столбцы. Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
3. В файле приведён фрагмент базы данных «Продукты» о поставках товаров в магазины районов города. База данных состоит из трёх таблиц. Таблица «Движение товаров» содержит записи о поставках товаров в магазины в течение первой декады августа 2021 г., а также информацию о проданных товарах. Поле Тип операции содержит значение Поступление или Продажа, а в соответствующее поле Количество упаковок внесена информация о том, сколько упаковок товара поступило в магазин или было продано в течение дня. Заголовок таблицы имеет следующий вид.
4. Все заглавные буквы русского алфавита закодированы неравномерным двоичным кодом, в котором никакое кодовое слово не является началом другого кодового слова. Это условие обеспечивает возможность однозначной расшифровки закодированных сообщений. Известно, что слово СПОРТЛОТО кодируется как 10010100110011110000100. Какой код соответствует букве Л, если известно, что коды подбирались под минимальную длину заданного слова.
5. На вход алгоритма подаётся натуральное число N большее 4. Алгоритм строит по нему новое число R следующим образом. 1. Строится двоичная запись числа N. 2. Далее эта запись обрабатывается по следующему правилу: а) если количество цифр в двоичной записи числа нечётное, то центральный бит двоичного представления инвертируется; б) если количество цифр в двоичной записи числа чётное, то два центральных бита двоичного представления инвертируется; Например, для исходного числа 610 = 1102 результатом является число 1002 = 410, а для исходного числа 910 = 10012 результатом является число 11112 = 1510. Укажите минимальное число N, после обработки которого с помощью этого алгоритма получается число R, большее 100 и меньшее N. В ответе запишите это число в десятичной системе счисления.
6. Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует 5 команд: Поднять хвост, означающая переход к перемещению без рисования; Опустить хвост, означающая переход в режим рисования; Вперёд n (где n – целое число), вызывающая передвижение Черепахи на n единиц в том направлении, куда указывает её голова; Назад n (где n – целое число), вызывающая передвижение в противоположном голове направлении; Направо m (где m – целое число), вызывающая изменение направления движения на m градусов по часовой стрелке, Налево m (где m – целое число), вызывающая изменение направления движения на m градусов против часовой стрелки. Запись Повтори k [Команда1 Команда2 … КомандаS] означает, что последовательность из S команд повторится k раз.
7. Спутник каждую секунду делает снимок 20 на 7.6 километра. Размер пикселя на местности 0.65х0.65 метра. Цвет пикселя выбирается из палитры в 256 цветов. Оцените объем памяти (в МБ) для хранения одного изображения. Сжатие не производится. Ответ округлите до большего целого числа.
8. Определите количество десятизначных чисел, записанных в восьмеричной системе счисления, в записи которых ровно пять цифры 7 и при этом никакая нечетная цифра не стоит рядом с цифрой 7.
9. Откройте файл электронной таблицы, содержащей в каждой строке шесть натуральных чисел. Определите количество строк таблицы, содержащих числа, для которых выполнено строго одно из условий: – в строке есть повторяющиеся числа; – в строке есть ровно три нечетных числа. В ответе запишите только число.
10. Текст произведения Ника Горькавого «Теория Катастроф» представлен в виде текстового файла. Откройте файл и определите, сколько бифуркационных технологий содержал итоговый список. В ответе запишите только число.
11. Вася решил закодировать персональные данные всех 1347 учеников всей школы. Для каждого ученика был сформирован ID из нескольких полей: номер класса, буква (а,б,в,г,д), пол, день и месяц рождения, номер имени по таблице имен (всего 103), номер фамилии по таблице фамилий (всего 733). Сперва Вася для каждого поля выделил минимальное количество байт. Затем попробовал закодировать все поля непрерывной битовой строкой и для каждого ID выделил минимальное количество байт. Сколько байт сэкономил Вася во втором случае для кодирования всех учеников школы?
12. Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр) А) заменить(v, w). Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды заменить(111, 27) преобразует строку 05111150 в строку 0512750. Если в строке нет вхождений цепочки v, то выполнение команды заменить(v, w) не меняет эту строку. Б) нашлось(v). Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется. Цикл выполняется, пока условие истинно.
13. На рисунке представлена схема дорог, связывающих города А, Б, В, Г, Д, Е, Ж, З, И, К, Л. По каждой дороге можно двигаться только в одном направлении, указанном стрелкой. Определите количество различных путей ненулевой длины, которые начинаются и заканчиваются в городе Е, не содержат этот город в качестве промежуточного пункта и проходят через промежуточные города не более одного раза.
14. Дано выражение 12×4536 + 1×12345 В записи чисел переменной x обозначена неизвестная цифра из допустимого алфавита для указанных систем счисления. Определите наибольшее значение x, при котором значение данного арифметического выражения кратно 13. Для найденного значения x вычислите частное от деления значения арифметического выражения на 13 и укажите его в ответе в десятичной системе счисления.
15. На числовой прямой даны два отрезка: B = [23;37] и C = [41;73]. Укажите наименьшую длину такого отрезка А, для которого логическое выражение ¬((¬(x ∈ B) → (x ∈ C)) → (x ∈ A)) ложно (т.е. принимает значение 0) при любом значении переменной x.
16. Обозначим частное от деления натурального числа a на натуральное число b как a//b, а остаток как a%b. Например, 17//3 = 5, 17%3 = 2. Алгоритм вычисления значения функции F(n), где n – целое неотрицательное число, задан следующими соотношениями: F(n) = n при n < 10; F(n) = F(n//10) + F(n%10) , если 10 ⩽ n < 1000; F(n) = F(n//1000) — F(n%1000) , если n ⩾ 1000. Определите количество значений n, не превышающих 106 , для которых F(n) = 0?
17. В файле содержится последовательность целых чисел по модулю менее 10000. а) рассматриваются только пары в которых строго одно число оканчивается на 7. б) квадрат разности элементов пары меньше модуля разности квадратов хотя бы одной пары (отвечающей условию а). В ответе запишите два числа: сначала количество найденных пар, затем минимальный квадрат разности. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
18. Квадрат разлинован на N×N клеток (1 < N < 30). Роботу нужно перейти через поле с севера (верхняя строка) на юг (нижняя строка). Он может начать переход с любой клетки первой строки и закончить на любой клетке нижней строки. С каждым шагом Робот переходит в следующую строку и может за одно перемещение попасть в одну из трех клеток следующей строки (на клетку прямо вниз или на одну из клеток слева/справа от неё). Ходы только влево или вправо (без смены строки), назад (в предыдущую строку) и за границы поля запрещены. В каждой клетке поля лежит монета достоинством от 1 до 100. Робот собирает все монеты по пройденному маршруту. Определите максимальную возможную денежную сумму и количество монет с чётным значением, которую может собрать Робот, пройдя с северной границы поля (сверху) до южной границы поля (снизу). В ответе укажите два числа: сначала максимальную сумму, затем количество монет с четным значением по маршруту с максимальной суммой.
19. Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в меньшую кучу один или три камня. Изменять количество камней в большей куче не разрешается. Игра завершается, когда количество камней в кучах становится равным. Победителем считается игрок, сделавший последний ход, то есть первым сравнявшим количество камней в двух кучах. Игроки играют рационально, т.е. без ошибок. В начальный момент в первой куче было 13 камней, а во второй – S камней, 1 ≤ S ≤ 23? Укажите такое минимальное значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.
20. Для игры, описанной в задании 19, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: – Петя не может выиграть за один ход; – Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Найденные значения запишите в ответ в порядке возрастания
21. Для игры, описанной в задании 19, найдите два значения S, при котором одновременно выполняются три условия: – у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети; – у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом; – Петя может выбирать, каким ходом выиграет Ваня;
22. В файле содержится информация о совокупности N вычислительных процессов, которые могут выполняться параллельно или последовательно. Будем говорить, что процесс B зависит от процесса A, если для выполнения процесса B необходимы результаты выполнения процесса A. В этом случае процессы могут выполняться только последовательно. Информация о процессах представлена в файле в виде таблицы. В первом столбце таблицы указан идентификатор процесса (ID), во втором столбце таблицы – время его выполнения в миллисекундах, в третьем столбце перечислены с разделителем «;» ID процессов, от которых зависит данный процесс. Если процесс является независимым, то в таблице указано значение 0. Определите максимальное количество процессов, которые завершатся за 73 мс, при условии, что все независимые друг от друга процессы могут выполняться параллельно.
23. У исполнителя Кузнечик есть 4 команды: 1. Прибавить 1 2. Прибавить 3 3. Вычесть 1 4. Вычесть 3 Сколько существует программ, для которых при исходном числе 42 результатом будет являться число 42, при этом траектория вычисления содержит только числа от 40 до 49, притом не более 1 раза, т.е. без повторов.
24. Текстовый файл содержит строку из десятичных цифр и букв латинского алфавита. Найдите минимальную длину подстроки включающей все шестнадцатеричные цифры. Строка может включать повторяющиеся цифры и другие символы. В ответе укажите найденную длину..
25. Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы: символ «?» означает ровно одну произвольную цифру; символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность. Например, маске 123*4?5 соответствуют числа 123405 и 12300405. Найдите все натуральные числа, не превышающие 1010, которые соответствуют маске 1?1?1?1*1 и при этом без остатка делятся на 2023, а сумма цифр числа равна 22. В ответе запишите все найденные числа в порядке возрастания. Количество строк в таблице для ответа избыточно.
26. В сетевом приложении реализован кэш размером V МБ для файлов размером от 1 до 999 МБ. Пользователи запрашивают файлы в порядке, заданном в исходном файле. Алгоритм кэширования сперва заполняет весь кэш. Для размещение следующего файла кэш нужно освободить. Для этого из кэша удаляется один подходящий файл, так чтобы свободное место было минимальным и достаточным для размещения нового файла. Если удаление даже самого большого файла не освобождает необходимого места, то удаляется самый большой файл и алгоритм рекурсивно повторяется, пока не будет достаточного места для нового файла.
27. Дана последовательность натуральных чисел. Расстояние между элементами последовательности – это разность их порядковых номеров. Например, если два элемента стоят в последовательности рядом, расстояние между ними равно 1, если два элемента стоят через один – расстояние равно 2 и т. д. Назовём тройкой любые три числа из последовательности, расстояние между которыми не меньше 17. Необходимо определить количество троек, в которых сумма чисел в тройке делится без остатка на 7717.
ПОДЕЛИТЬСЯ МАТЕРИАЛОМ

В конце варианта приведены правильные ответы ко всем заданиям. Вы можете свериться с ними и найти у себя ошибки.
Скачать тренировочный вариант ЕГЭ: Скачать
Файлы для варианта: Скачать
Интересные задания:
4. Все заглавные буквы русского алфавита закодированы неравномерным двоичным кодом, в котором никакое кодовое слово не является началом другого кодового слова. Это условие обеспечивает возможность однозначной расшифровки закодированных сообщений. Известно, что слово СПОРТЛОТО кодируется как 10010100110011110000100. Какой код соответствует букве Л, если известно, что коды подбирались под минимальную длину заданного слова. Примечание: под условием Фано понимается такой метод кодирования, при котором ни одно кодовое слово не является началом другого кодового слова. Такой способ кодирования позволяет получить однозначно декодируемый код.
5. На вход алгоритма подаётся натуральное число N большее 4. Алгоритм строит по нему новое число R следующим образом. 1. Строится двоичная запись числа N. 2. Далее эта запись обрабатывается по следующему правилу:
а) если количество цифр в двоичной записи числа нечётное, то центральный бит двоичного представления инвертируется;
б) если количество цифр в двоичной записи числа чётное, то два центральных бита двоичного представления инвертируется; Например, для исходного числа 610 = 1102 результатом является число 1002 = 410, а для исходного числа 910 = 10012 результатом является число 11112 = 1510. Укажите минимальное число N, после обработки которого с помощью этого алгоритма получается число R, большее 100 и меньшее N. В ответе запишите это число в десятичной системе счисления.
7. Спутник каждую секунду делает снимок 20 на 7.6 километра. Размер пикселя на местности 0.65х0.65 метра. Цвет пикселя выбирается из палитры в 256 цветов. Оцените объем памяти (в МБ) для хранения одного изображения. Сжатие не производится. Ответ округлите до большего целого числа.
8. Определите количество десятизначных чисел, записанных в восьмеричной системе счисления, в записи которых ровно пять цифры 7 и при этом никакая нечетная цифра не стоит рядом с цифрой 7.
9. Откройте файл электронной таблицы, содержащей в каждой строке шесть натуральных чисел. Определите количество строк таблицы, содержащих числа, для которых выполнено строго одно из условий:
– в строке есть повторяющиеся числа;
– в строке есть ровно три нечетных числа. В ответе запишите только число.
10. Текст произведения Ника Горькавого «Теория Катастроф» представлен в виде текстового файла. Откройте файл и определите, сколько бифуркационных технологий содержал итоговый список. В ответе запишите только число.
11. Вася решил закодировать персональные данные всех 1347 учеников всей школы. Для каждого ученика был сформирован ID из нескольких полей: номер класса, буква (а,б,в,г,д), пол, день и месяц рождения, номер имени по таблице имен (всего 103), номер фамилии по таблице фамилий (всего 733). Сперва Вася для каждого поля выделил минимальное количество байт. Затем попробовал закодировать все поля непрерывной битовой строкой и для каждого ID выделил минимальное количество байт. Сколько байт сэкономил Вася во втором случае для кодирования всех учеников школы?
Вам будет интересно:
ЕГЭ 2023 по информатике 11 класс. Новый тренировочный вариант №6 — №221107 (задания и ответы)
* Олимпиады и конкурсы
* Готовые контрольные работы
* Работы СтатГрад
* Официальные ВПР
Поделиться:
Продолжаем решать демоверсию ЕГЭ по информатике 2023.
Условия задач были взяты с сайта: https://fipi.ru/ege/demoversii-specifikacii-kodifikatory#!/tab/151883967-5
Видеокурс — это то, с чего лучше всего начать подготовку к ЕГЭ по информатике.
Демоверсия ЕГЭ по информатике 2023 (Задания 1-5)
Демоверсия ЕГЭ по информатике 2023 (Задания 6-10)
Демоверсия ЕГЭ по информатике 2023 (Задания 16-21)
Демоверсия ЕГЭ по информатике 2023 (Задания 22-27)
Задание 11
При регистрации в компьютерной системе каждому объекту присваивается
идентификатор, состоящий из 250 символов и содержащий только
десятичные цифры и символы из 1650-символьного специального алфавита.
В базе данных для хранения каждого идентификатора отведено одинаковое
и минимально возможное целое число байт. При этом используется
посимвольное кодирование идентификаторов, все символы кодируются
одинаковым и минимально возможным количеством бит.
Определите объём памяти (в Кбайт), необходимый для хранения 65 536
идентификаторов. В ответе запишите только целое число – количество
Кбайт.
Решение:
Воспользуемся формулой для 11-ого задания из ЕГЭ по информатике.
Вместо N подставляем число 1650 + 10 = 1660 (1650 символов плюс 10 цифр). Тогда
1660 < 211
Т.е. 11 бит точно хватит, чтобы закодировать 1650 символов.
В идетификаторе всего 250 ячейки. Найдём сколько будет «весить» один идетификатор: 250 * 11 = 2750 бит. Узнаем, сколько байт потребуется для одного идентификатора 2772 / 8 = 344 байт (округлили в большую сторону, чтобы точно хватило).
У нас всего 65536 идентификаторов. Тогда нам потребуется 65536 * 344 = 22544384 байт. Переведём в Кб: 22544384 / 1024 = 22016 Кб.
Ответ: 22016
Задание 12
Исполнитель Редактор получает на вход строку цифр и преобразовывает её.
Редактор может выполнять две команды, в обеих командах v и w обозначают
цепочки цифр.
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение цепочки v на
цепочку w. Например, выполнение команды
заменить (111, 27)
преобразует строку 05111150 в строку 0527150.
заменить (v, w) не меняет эту строку.
Б) нашлось (v).
Эта команда проверяет, встречается ли цепочка v в строке исполнителя
Редактор. Если она встречается, то команда возвращает логическое значение
«истина», в противном случае возвращает значение «ложь». Строка
исполнителя при этом не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ условие
ТО команда1
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно) или команда2 (если условие
ложно).
Дана программа для Редактора:
НАЧАЛО
ПОКА нашлось (>1) ИЛИ нашлось (>2) ИЛИ нашлось (>0)
ЕСЛИ нашлось (>1)
ТО заменить (>1, 22>)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось (>2)
ТО заменить (>2, 2>)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось (>0)
ТО заменить (>0, 1>)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
На вход приведённой выше программе поступает строка, начинающаяся
с символа «>», а затем содержащая 39 цифр «0», n цифр «1» и 39 цифр «2»,
расположенных в произвольном порядке.
Определите наименьшее значение n, при котором сумма числовых значений
цифр строки, получившейся в результате выполнения программы, является
простым числом.
Решение:
Есть отличный разбор 12 задания в видеокурсе по подготовке к ЕГЭ по информатике.
Единица превращается в две двойки. Двойка преходим в саму себя. Ноль превращается в 1.
Изначально было 39 нулей. Значит, 39 единиц уже точно будет в строке, после выполнения программы. Так же там будет 39 двоек. Т.е., если не брать во внимание n единиц, сумма в результате будет 39 + 39 * 2 = 117.
Нужно прибавить некоторое количество чевёрок, чтобы получилось ближайшее простое число.
117 + 4*5 = 137.
Получается 5 единиц.
Ответ: 5
Задание 13
На рисунке представлена схема дорог, связывающих города А, Б, В, Г, Д, Е,
Ж, И, К, Л. По каждой дороге можно двигаться только в одном направлении,
указанном стрелкой.
Определите количество различных путей ненулевой длины, которые
начинаются и заканчиваются в городе Е, не содержат этот город в качестве
промежуточного пункта и проходят через промежуточные города не более
одного раза.
Решение:
Решать будем примерно так же, как и классическую задачу. Основные идеи ни чем не отличаются.
В город Е входят города с числами: 16, 2 и 3. Значит, ответ получается 16 + 2 + 3 = 21.
Ответ: 21
Задание 14
Операнды арифметического выражения записаны в системе счисления
с основанием 15.
123×515 + 1×23315
В записи чисел переменной x обозначена неизвестная цифра из алфавита
15-ричной системы счисления. Определите наименьшее значение x, при
котором значение данного арифметического выражения кратно 14. Для
найденного значения x вычислите частное от деления значения
арифметического выражения на 14 и укажите его в ответе в десятичной
системе счисления. Основание системы счисления в ответе указывать
не нужно.
Решение:
Решим с помощью программирования на языке Python.
for x in '0123456789ABCDE': r = int('123' + x + '5', 15) + int('1' + x + '233', 15) if r%14==0: print(r//14) break
Перебираем для переменной x все цифры в пятнадцатиричной системе. Вычисляем значение выражение. Функция int может перевести строку, записанную в пятнадцатиричной системе, в число.
Остаётся только найти нужное значение и остановить цикл с помощью break.
Ответ: 8767
Задание 15
Обозначим через ДЕЛ(n, m) утверждение «натуральное число n делится без остатка на натуральное число m». Для какого наименьшего натурального числа А формула
(ДЕЛ(x, 2) → ¬ДЕЛ(x, 3)) ∨ (x + A >= 100)
тождественно истинна (т.е. принимает значение 1) при любом натуральном значении переменной x ?
Решение:
Применим шаблон из видокурса ЕГЭ по информатике.
def D(n, m): if n%m==0: return True else: return False for A in range(1, 1000): k=0 for x in range(1, 10000): if (not(D(x, 2)) or not(D(x, 3))) or (x + A >= 100): k=k+1 if k==9999: print(A)
Здесь в начале пишем функцию D, которая олицетворяет функцию ДЕЛ. Потом перебираем различные натуральные значения A. Если функция для какого-то значения сработает 9999 раз, то будем считать, что такое значение A нам подходит.
Самое маленькое значение получается 74.
Ответ: 94
Демоверсия ЕГЭ по информатике 2023 (Задания 1-5)
Демоверсия ЕГЭ по информатике 2023 (Задания 6-10)
Демоверсия ЕГЭ по информатике 2023 (Задания 16-21)
Демоверсия ЕГЭ по информатике 2023 (Задания 22-27)
В решении к заданию 11 вы пишите: «У нас всего 4096 идетификаторов». Пожалуй, надо исправить на «65 536 идентификаторов»…
Преобразование списка (массива) в строку
Список(массив) в строку
arr = ['1','2','3','4','5']
arr = ''.join(arr)
_______________
Используя map()
arr = [1,2,3,4,5]
arr = ''.join(map(str,arr))
________________________
Использование генератора
arr = [1,2,3,4,5]
arr = ''.join(str(x) for x in arr)
Преобразование строки в список
Строка в список(массив)
x = 'Hello'
x = list(x)
____________________
Разделение по словам
x = 'Hello world'
x = x.split()
Перевод числа в 10 СС
Функция [ Перевод в СС + max ]
def f(x, i):
x = int(str(x), i)
return x
print(max(f(49, 16), f(102, 8), f(1011, 2)))
На уроке рассмотрено решение 25 задания ЕГЭ по информатике: дается подробное объяснение и разбор заданий демонстрационных вариантов и досрочных экзаменов
Содержание:
- Объяснение задания 25 ЕГЭ по информатике
- Алгоритмизация и программирование
- Решение 25 заданий ЕГЭ по информатике
- Делители числа
- Простые числа
- Задания прошлых лет для тренировки (до 2021)
- Задачи с поэлементной обработкой массива
- Задачи на обработку элементов массива с последующей заменой
- Задачи на обработку пар элементов массива (два подряд идущих)
- Задачи на обработку трёх подряд идущих элементов массива (тройки элементов массива)
- Задачи на поиск максимума, минимума элементов массива и другие
- Решение 25 заданий ЕГЭ по информатике: более сложные задания
25-е задание: «Программная обработка целочисленной информации»
Уровень сложности
— высокий,
Требуется использование специализированного программного обеспечения
— да,
Максимальный балл
— 2,
Примерное время выполнения
— 20 минут.
Проверяемые элементы содержания: Умение создавать собственные программы (10–20 строк) для обработки целочисленной информации
Рекомендации по выполнению:
«В этом задании требуется написать фрагмент программы, реализующий простую обработку целочисленного массива. У экзаменуемых, хорошо освоивших технику программирования, это задание обычно не вызывает серьёзных затруднений, поскольку алгоритм обработки массива не относится к сложным»
Типичные ошибки и рекомендации по их предотвращению:
«Часто бывает, что увлекшись написанием решения, экзаменуемый совершает ошибки в простых ситуациях: организация ввода-вывода, описание и инициализация переменных, обработка массива (выход за границу) и т.д. Эти ошибки могут стоить Вам нескольких баллов, старайтесь их не допускать»
ФГБНУ «Федеральный институт педагогических измерений»
Алгоритмизация и программирование
Для решения задания требуется вспомнить темы:
- Одномерные массивы.
- Двумерные массивы.
Решение 25 заданий ЕГЭ по информатике
Плейлист видеоразборов задания на YouTube:
Задание демонстрационного варианта 2022 года ФИПИ
Делители числа
25_7:
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [126849; 126871], числа, имеющие ровно 4 различных делителя.
Выведите эти четыре делителя для каждого найденного числа в порядке возрастания.
✍ Решение:
-
✎ Решение (неоптимизированный вариант, метод полного перебора):
- Будем использовать оптимизированный вариант программы, подходящий для «медленных» компьютеров. Для этого перебор делителей для числа
nбудем выполнять от2до√n, округлив его до ближайшего целого числа (не включая точный квадратный корень, если он существует):
PascalABC.net:
|
||
Python:
|
||
| С++: |
✎ Решение (оптимизированный вариант):
вместо диапазона делителей [1; число] использовать диапазон [1; округл(√n)]
n), то в список делителей добавлять будем только сам делитель, если нет – то добавляем пару делителей (делитель и n // делитель):Пример: число 8 = 2 * 4 Достаточно рассмотреть цикл от 2 до округл(√8) (=2) если 8 делится на 2 и 8/2 не равно 2, то делители: 2 и 4 (8/2)
PascalABC.net:
|
||
Python:
|
||
| С++: |
✎ Решение: Генерация списка делителей.
Общая идея:
| PascalABC.net: |
Python:
for n in range(126849, 126871+1): divs = [d for d in range(1, n+1) if n % d == 0] if len(divs) == 4: print( *divs ) |
| С++: |
Ответ:
1 3 42283 126849 1 47 2699 126853 1 5 25373 126865 1 293 433 126869
25_8:
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [164700; 164752], числа, имеющие ровно 6 различных делителей.
Выведите эти делители для каждого найденного числа в порядке возрастания.
✍ Решение:
-
✎ Решение (оптимизированный вариант):
- Для каждого числа указанного диапазона генерируем список делителей.
- Если длина списка равна четырем, выводим его.
PascalABC.net:
|
||
Python:
|
||
| С++: |
✎ Решение: Генерация списка делителей.
Общая идея:
| PascalABC.net: |
Python:
for n in range(164700, 164752+1): divs = [d for d in range(1, n+1) if n % d == 0] if len(divs) == 6: print( *divs ) |
| С++: |
Ответ:
1 2 4 41177 82354 164708 1 3 9 18301 54903 164709 1 2 4 41179 82358 164716 1 2 4 41183 82366 164732
25_9:
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [190201; 190230], числа, имеющие ровно 4 различных делителя.
Выведите эти четыре делителя для каждого найденного числа в порядке убывания.
✍ Решение:
-
✎ Решение (неоптимизированный вариант, метод полного перебора):
- Для каждого числа указанного диапазона генерируем список делителей.
- Если длина списка равна четырем, выводим его.
PascalABC.net:
|
||
Python:
|
||
| С++: |
✎ Решение (оптимизированный вариант):
PascalABC.net:
|
||
Python:
|
||
| С++: |
✎ Решение: Генерация списка делителей.
Общая идея:
| PascalABC.net: |
Python:
for n in range(190201, 190230+1): divs = [d for d in range(1, n+1) if n % d == 0] if len(divs) == 4: divs.reverse() # реверсируем (по убыванию) print( *divs ) |
| С++: |
Ответ:
190201 17291 11 1 190202 95101 2 1 190214 95107 2 1 190219 853 223 1 190222 95111 2 1 190223 17293 11 1 190227 63409 3 1 190229 14633 13 1
Видеоразбор задания:
📹 YouTube здесь
📹 Видеорешение на RuTube здесь
25_10:
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [190201; 190280], числа, имеющие ровно 4 различных ЧЁТНЫХ делителя.
Выведите эти четыре делителя для каждого найденного числа в порядке убывания.
✍ Решение:
-
✎ Решение (неоптимизированный вариант, метод полного перебора):
- Для каждого числа указанного диапазона генерируем список делителей.
- Если длина списка равна четырем, выводим его.
PascalABC.net:
|
||
Python:
|
||
| С++: |
✎ Решение: Генерация списка делителей.
Общая идея:
| PascalABC.net: |
Python:
for n in range(190201, 190280+1): divs = [d for d in range(1, n+1) if n % d == 0 and d % 2 == 0] if len(divs) == 4: divs.reverse() print( *divs ) |
| С++: |
Ответ:
190226 838 454 2 190234 17294 22 2 190238 2606 146 2 190252 95126 4 2 190258 758 502 2 190274 27182 14 2 190276 95138 4 2
25_11:
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [394441; 394505], числа, имеющие максимальное количество различных делителей. Если таких чисел несколько, то найдите минимальное из них.
Выведите количество делителей найденного числа и два наибольших делителя в порядке убывания.
✍ Решение:
-
✎ Решение (неоптимизированный вариант, метод полного перебора):
PascalABC.net:
|
||
Python:
|
||
| С++: |
✎ Решение (Генерация списка делителей):
| PascalABC.net: | ||
Python:
|
||
| С++: |
Ответ: 48 394450 197225
Видео
Простые числа
25_12:
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [3532000; 3532160], простые числа.
Выведите все найденные простые числа в порядке убывания, слева от каждого числа выведите его номер по порядку.
✍ Решение:
-
✎ Решение (неоптимизированный вариант, метод полного перебора):
PascalABC.net:
|
||
Python:
|
||
| С++: |
✎ Решение (оптимизированный вариант):
PascalABC.net:
|
||
Python:
|
||
| С++: |
Ответ:
1 3532147 2 3532121 3 3532103 4 3532091 5 3532049 6 3532033 7 3532021 8 3532019 9 3532007
Задания прошлых лет для тренировки (до 2021)
Задачи с поэлементной обработкой массива
25_1: ЕГЭ по информатике 2017 года (один из вариантов со слов выпускника):
Дан целочисленный массив из 20 элементов. Элементы массива могут принимать целые значения от 0 до 10 000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество элементов массива НЕ кратных 3.
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но использовать все описанные переменные не обязательно.
1 2 3 4 5 6 7 8 |
const N = 20; var i,j,k:integer; a:array [1..N] of integer; begin for i:=1 to N do readln(a[i]); … end. |
✍ Решение:
Рассмотрим заданный фрагмент решения:
- в цикле со счетчиком i запрашиваются значения элементов массива, т.е. формируется массив;
- из постановки задания видим, что необходимо найти количество чего-то, это значит, что нужно использовать переменную счетчик;
- объявлены три целочисленных переменных: i, j, k; переменная i использована в первом цикле, значит для счетчика можно взять переменную k;
- счетчик всегда нужно обнулять, поэтому следующим оператором будет:
- определим, количество чего нам необходимо считать: количество элементов массива не кратных 3. Кратность можно определить через остаток от деления: если значение элемента массива при делении на 3 в остатке не возвращает 0, значит элемент не кратен трем;
- остаток при делении в паскале — оператор mod. Поскольку необходимо просмотреть каждый элемент массива, то это нужно делать в цикле for;
- переменная i уже использована в первом цикле for, значит, для очередного цикла возьмем неиспользованную переменную j:
- если условие истинно (т.е. нашелся элемент массива, не кратный трем), то увеличиваем счетчик:
- после цикла остается вывести значение счетчика, т.е. вывести количество элементов массива не кратных 3:
for j:=1 to N do if a[j] mod 3 <> 0 then
Результат:
k:=0; for j:=1 to N do if a[j] mod 3 <> 0 then inc(k); writeln(k);
Смотрите видео с подробным объяснением и разбором данного 25 задания:
📹 YouTube здесь
📹 Видеорешение на RuTube здесь
Задачи на обработку элементов массива с последующей заменой
25_3: Решение 25 задания ЕГЭ по информатике Демоверсия 2018:
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 10000 включительно. Опишите на одном из языков программирования алгоритм, который находит количество элементов массива, больших 100 и при этом кратных 5, а затем заменяет каждый такой элемент на число, равное найденному количеству. Гарантируется, что хотя бы один такой элемент в массиве есть. В качестве результата необходимо вывести измененный массив, каждый элемент массива выводится с новой строчки.
Например, для массива из шести элементов: 4 115 7 195 25 106
программа должна вывести числа 4 2 7 2 25 106
Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.
Паскаль:
1 2 3 4 5 6 7 8 9 10 |
const N = 30; var a: array [1..N] of longint; i, j, k: longint; begin for i := 1 to N do readln(a[i]); ... end. |
В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например Free Pascal 2.6). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии.
Похожие задания для тренировки
✍ Решение:
-
Решение на языке Паскаль:
1 2 3 4 5 6 7 8 9 |
k := 0; for i := 1 to N do if (a[i] > 100) and (a[i] mod 5 = 0) then k:=k+1; for i := 1 to N do begin if (a[i] > 100) and (a[i] mod 5 = 0) then a[i] := k; writeln(a[i]) end |
25_6:
Дан массив, содержащий неотрицательные целые числа. Необходимо вывести:
Например, для массива из шести элементов: 4 6 12 17 3 8
ответом будет 12 — наибольшее чётное число, поскольку чётных чисел в этом массиве больше
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.
Python:
1 2 3 4 5 6 |
# допускается также использовать # целочисленные переменные j, k, m a = [] n = 2000 // менять значение n нельзя for i in range(0, n): a.append(int(input())) |
✍ Решение:
-
Решение на языке Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
a = [] n = 2000 // менять значение n нельзя for i in range(0, n): a.append(int(input())) j = 0 k = 0 m = 0 for i in range(0, n): if a[i]%2 == 0: j+=1 else: k+=1 if k>j: j = 0 for i in range(0, n): if a[i]>j and a[i] % 2 != 0: j = a[i] print(j) else: for i in range(0, n): if a[i]>m and a[i] % 2 == 0: m = a[i] print(m) |
Задачи на обработку пар элементов массива (два подряд идущих)
25_4:
Дан целочисленный массив из 40 элементов. Элементы массива могут принимать целые значения от 0 до 10 000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество пар элементов массива, в которых одно из чисел двузначное. В данной задаче под парой подразумевается два подряд идущих элемента массива.
Например, для массива из семи элементов: 13; 323; 12; 33; 117 — ответ: 4.
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.
1 2 3 4 5 6 7 8 9 10 |
const N = 40; var a: array [1..N] of integer; i, j, k: integer; begin for i := 1 to N do readln(a[i]); ... end. |
✍ Решение:
1 2 3 4 5 |
k := 0; for i := 1 to N - 1 do if ((a[i] < 100) and (a[i] > 9)) or ((a[i + l] < 100) and (a[i + 1] > 9)) then inc(k); writeln(k); |
25_5:
Дан целочисленный массив из 20 элементов. Элементы массива могут принимать целые значения от -10 000 до 10 000 включительно. Опишите алгоритм, позволяющий найти и вывести количество пар элементов массива, в которых сумма элементов делится на 2, но не делится на 4. В данной задаче под парой подразумевается два подряд идущих элемента массива.
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.
Python:
1 2 3 4 5 6 7 |
# допускается также использовать # две целочисленные переменные # j и k a = [] n = 20 for i in range(0, n): a.append(int(input())) |
✍ Решение:
-
Проанализируем данный фрагмент кода на языке Python:
- В первой строчке кода объявляется список а. Дальше, идет объявление переменной n = 20, она отвечает за размер массива.
- Ниже мы видим инициализацию списка а. Мы должны дописать код дальнейшей программы, который последует после заполнения списка пользователем.
- Итак, по условию мы должны находить пары элементов, сумма которых делится на 2, но не делится на 4, причем парами считаются соседние элементы, например:
a[0]иa[1],a[1]иa[2]. - Мы можем узнать, делится ли данный элемент на число, если остаток от деления на него равен 0, и не делится — в противном случае. Тогда сумма соседних элементов при делении на 2 должна давать остаток 0, а при делении на 4 наоборот — отличный от 0.
- Введем цикл, который будет перебирать все элементы массива, считать сумму соседей и проверять истинность условия.
- Когда мы определились с условием, за счетчик возьмем переменную
k, которую допустимо брать исходя из комментариев к программе. - Мы добавили допустимую переменную
j, чтобы условный оператор выглядел компактнее. - Однако задача еще не решена. Во-первых, мы должны до цикла инициализировать счетчик
k = 0. Так как иначе Python выдаст ошибку. - Кроме того, добавим вывод результата после цикла.
- Таким образом, правильный вариант с учетом доработок:
При решении такого рода задач, необходимо помнить, что массив в Python — это список и это динамический тип данных. Кроме того, нумерация элементов массива начинается с 0.
for i in range(0, n-1): j = a[i] + a[i+1] if j%2 == 0 and j%4 != 0:
Так как мы рассматриваем элемент a[i + 1], значит, цикл должен работать до n — 1, чтобы не выйти за границы диапазона массива.
... if j%2 == 0 and j%4 != 0: k+=1
Дело в том, что мы пытаемся присвоить переменной k его же значение, но на 1 больше, но интерпретатор «не встречал» раньше переменной k, из-за чего возникает ошибка.
a = [] n = 20 for i in range(0, n): a.append(int(input())) k = 0 for i in range(0, n - 1): j = a[i] + a[i + 1] if j%2 == 0 and j%4 != 0: k += 1 print(k)
Задачи на обработку трёх подряд идущих элементов массива (тройки элементов массива)
25_2:
Дан целочисленный массив из 40 элементов. Элементы массива могут принимать целые значения от 0 до 10 000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество троек элементов массива, состоящих из равных между собой чисел. В данной задаче под тройкой подразумевается три подряд идущих элемента массива.
Например, для массива из семи элементов: 2; 2; 2; 4; 4; 4; 4 — ответ: 3.
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.
1 2 3 4 5 6 7 8 9 10 |
const N=40; var a: array[1..N] of integer; i, j, k:integer; begin for i:=1 to N do readln(a[i]); ... end. |
✍ Решение:
- из постановки задания видим, что необходимо искать количество чего-то, это значит, что нужно использовать переменную счетчик; возьмем для нее объявленную переменную k;
- счетчик всегда нужно сначала обнулять, поэтому следующим оператором будет:
- определим, количество чего нам необходимо считать: количество троек элементов массива, состоящих из равных между собой чисел. Т.е. необходимо сравнивать между собой каждые три подряд идущих элемента массива, например так:
- inc(k) — оператор, увеличивающий счетчик k на единицу;
- условие необходимо выполнять в цикле, так как нужно проверить все элементы массива; цикл со счетчиком необходимо организовать от 1 до N-2, в противном случае индексы элементов a[i+2] выйдут за границы диапазона массива (например, при i = 40, получим … a[40+2], а 42-го элемента массива не существует, поэтому цикл надо делать до i = 38, т.е. N-2).
if (a[i]=a[i+1]) and (a[i]=a[i+2]) then inc(k);
Результат:
for i:=1 to N-2 do if (a[i]=a[i+1]) and (a[i]=a[i+2]) then inc(k); writeln(k);
Более подробное объяснение предлагаем посмотреть на видео:
📹 YouTube здесь
📹 Видеорешение на RuTube здесь
Задачи на поиск максимума, минимума элементов массива и другие
- 10.03.2023
Шестой тренировочный вариант, составленный на основе демоверсии ЕГЭ 2023 года по информатике от ФИПИ. Вариант включает все задания кодификатора 2023 года и учитывает все изменения, которые произошли в 2023 году (полный список изменений). Вариант содержит правильные ответы и подробные разборы для второй части теста — задания повышенной сложности. Ответы сохранены в конце варианта.
- Другие тренировочные варианты по информатике
Тест может содержать вопросы на различные темы, включая алгоритмы, программирование, базы данных, сети, компьютерную архитектуру и технологии. Вопросы могут быть представлены в различных форматах, таких как выбор одного или нескольких правильных ответов, соответствие, заполнение пропусков, короткий или развернутый ответы. В тесте могут также содержаться задания, требующие написания кода на языке программирования, анализа программного кода, использования различных программных инструментов и знание основных терминов и определений в области информатики.
- Дополнительные файлы для варианта 6
Смотреть в PDF:
Или прямо сейчас: cкачать в pdf файле.




