Версия для слабовидящих
г. Уфа, ул. Г. Амантая, д. 11
lyceum-logo

Лучше весь век учиться, нежели пребыть незнающим.

 Александр Суворов
scale_1200-1-1-150x150
stopcovid
  • Сведения об ОО
    • Основные сведения
    • Структура и органы управления образовательной организацией
    • Документы
    • Образование
    • Образовательные стандарты
    • Руководство
    • Педагогический состав
    • Материально-техническое обеспечение и оснащенность образовательного процесса
    • Стипендии и иные виды материальной поддержки
    • Платные образовательные услуги
    • Финансово-хозяйственная деятельность
    • Вакантные места для приема (перевода)
    • Доступная среда
    • Организация питания
    • Международное сотрудничество
    • Управляющий совет
    • Антикоррупция
    • Горячая линия
  • Школьная жизнь
    • Наш лицей
      • Новости
      • Виртуальный музей М.К. Нагаева
      • Совет старшеклассников
      • Кадетское движение
      • Школьный спортивный клуб «ЛИС»
      • Клуб путешественников «Фортуна»
      • Робототехника
      • Фотогалерея
      • Видеогалерея
      • Достижения
    • Год памяти и славы
    • Внешний вид учащихся
    • Питание
      • Food
    • Башкирский язык как государственный язык Республики Башкортостан
    • График кружков
    • Воспитательная работа
    • Детский отдых и оздоровление
    • Пришкольный лагерь
  • Ученикам
    • Профориентация
      • Реализация профминимума
    • Прием в 10 класс
    • Расписание
    • Электронный дневник
    • ВПР
    • ГИА
    • ВОШ
    • Олимпиады и конкурсы
    • План мероприятий на каникулы
    • Здоровый образ жизни
    • Интересные образовательные сайты.
    • Безопасность
    • Список литературы для чтения летом 5-11 кл.
    • График кружков
    • Библиотека
    • Выпускникам
  • Учителям
    • Объявления для учителей
    • Информация по аттестации
    • Курсы повышения квалификации
    • Наставничество
    • Воспитательная работа
    • ВПР
    • ГИА
    • Безопасность
    • Учительская
    • Администрация
    • ШМО
    • Помощник по ДО
  • Родителям
    • Объявления
    • Расписание
    • Питание
      • Food
    • Поступление в лицей
    • Прием в 10 класс
    • Внешний вид учащихся
    • ВПР
    • ГИА
    • График кружков
    • Социально-психологическая служба
    • Форма обратной связи — вопросы, пожелания, замечания
    • Инструкция о размещении отзывов на сайте bus.gov.ru
    • Безопасность
    • Вопросы и ответы
  • Питание
  • ГИА
  • ЭИОС

ЕГЭ информатика

Главная ЕГЭ информатика
1 задание
2 задание
3 задание
4 задание
5 задание
6 задание
7 задание
8 задание
9 задание
10 задание
11 задание
12 задание
13 задание
14 задание
15 задание
16 задание
17 задание
18 задание
19 задание
20 задание
21 задание
22 задание
23 задание
24 задание
25 задание
26 задание
27 задание
1 задание

Сегодня наша задача разобраться с основными идеями и методами решения первой задачи ЕГЭ по информатике. Для начала хочу заметить, что не все задания по этому предмету предполагают решение через программирование, для этой задачи потребуется только ручка и бумага.

Терминология

1. Граф — набор вершин и ребер, соединяющих их.

2. Смежность вершин — вершины смежные, если они соединены ребром

3. Таблица смежности — таблица, отображающая смежность вершин графа. Если в ячейке (1;2), (2;1) стоит звездочка, значит между первой и второй вершиной есть ребро.

4. Степень вершины — количество выходящих из нее ребер. Степень в таблице можно определить, посчитав количество звездочек в ряду или столбце (например, у 4 вершины степень равняется 5).

5. Метка вершины — длина кротчайшего пути до этой вершины.

Заметим, что таблица симметрична относительно диагонали из левого верхнего угла в правый нижний. Происходит это потому, что если бы в (1;2) стояла звездочка, а в (2;1) — не стояла, то это значило бы что из первой вершины во вторую есть ребро, а из второго ребра в первую нет, но это абсурд. Также на диагоналях не может быть звездочек, потому что в заданиях не встречаются задачи с петлями (ребро из вершины в эту же вершину).

Когда мы разобрались с определениями, мы можем переходить к разбору задания. Всего у 1 задачи есть 3 типа: Неоднозначное и однозначное соотнесение таблицы с графом и задачи на алгоритм Декстера. Кардинальных различий между ними нет, лишь то, что в “Неоднозначных” не всегда можно точно определить полное соответствие между вершинами графа и их значением в таблице. Но в этих задачах это не требуется. Также в таблице смежности не указаны вершины, а их названия заменены на цифры. Обычно нам нужно найти соответствие между заданной вершиной и цифрой или длину ребра между двумя вершинами (если вместо звездочек стоят числа, соответствующие длине дороги).

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

Алгоритм решения:

1. Нужно у каждой вершины рядом записать ее степень

2. Разбить все вершины на группы по их степени

3. Установить соответствие между группой вершин и номерами вершин в таблице, которые им соответствуют. Если есть вершины со степенью, которая не повторяется у других вершин, то можно установить однозначное соответствие для этой вершины.

4. Разбить в одной группе на подгруппы по степени смежных с ними вершин

5. Проанализировать полученную информацию.

Неоднозначное соотнесение таблицы и графа

Пример 1.1:

В этой задаче нам необходимо определить под какими номерами записаны вершины A и G, причем нам не необязательно определять точное соответствие, достаточно найти два номера.

Начнем решать, пройдемся по пунктам нашего алгоритма

1. A – 3, B – 3, C –2, D – 3, E – 2, F – 6, G –3.

2. У нас получилось 3 группы. F-6 вершин, C и E – 2 вершины и A, B, D, G – 3 вершины.

3. Мы можем заключить, что вершине F соответствует номер 3, C и E — 4 и 5, а A, B, D и G — 1, 2, 6 и 7.

4. Заметим, что некоторые вершины графа симметричны C – E, D – B, G – A, также заметим, что группу степени 3 можно разбить на 2 подгруппы, те у которых смежные вершины имеют степень 3, 3, 6 и 3, 2, 6, вершины первой подгруппы — A, G, а вершины второй подгруппы — D, B.

5. Начнем анализировать информацию, вершины 4,5 (C, E) связаны с вершиными 3, 1, 2, мы знаем, что F-3, значит 1, 2 соответствуют B, D. Значит вершинам A и G соответствуют вершины 6 и 7.

Источник: ЕГЭ-2018. Досрочная волна.

Пример 1.2:

Рассмотрим еще одну задачу, в ней вместо звездочек нам даны числа, обозначающие длину ребер между вершин. Нам нужно найти сумму длин ребер Б — Д и В — Е.

Воспользуемся нашим алгоритмом

1. А — 2, Б — 3, В — 3, Г — 3, Д — 3, Е — 3, К — 3.

2. Здесь у нас получается всего две группы А — 2 вершины и Б, В, Г, Д, Е, К — 2 вершины.

3. Мы можем понять, что вершине А соответствует номер 4 из таблицы.

4. В группе Б, В, Г, Д, Е, К можем выделить подгруппу Б, В у них смежные вершины имеют степень 2, 3, 3, в то время как у всех остальных смежные вершины имеют степень 3, 3, 3.

5. Начнем анализировать информацию. Вершина А соединена с вершинами Б, В, а судя по таблице 4 вершина соединена с 3 и 6 вершиной, значит вершинам Б, В соответствуют вершины 3, 6. Рассмотрим вершины 3, 6, они соединены с вершинами 2, 4, 6 и 1, 3, 4 соответственно. Можем сделать вывод, что вершинам Д, Е соответствуют номера 1, 2. Тогда ребрам Б — Д и В — Е соответствуют ребра 3 – 2, 6 – 1. Их длина равна 14 и 8, а их сумма равна 22.

Источник: ЕГЭ-2021. Досрочная волна.

Пример 1.3:

В этой задаче нам необходимо найти сумму длин ребер D – B, A – E.

Воспользуемся нашим алгоритмом
1. A – 2, B – 3, C – 3, D – 3, E – 2, F – 2, G – 3.

2. В этой задаче у нас получится разделить все на 2 группы: A, E, F – 2 вершины, B, C, D, G – 3 вершины.

3. Пока что мы не можем определить какие вершины соответствуют каким номер, но мы можем понять, что вершинам A, E, F соответствуют номера 1, 6, 7, а вершинам B, C, D, G номера 2, 3, 4, 5

4. Заметим, что вершины со степенью 2 можно разделить на 2 подгруппы: A, E со смежными вершинами степени 2,3 и F со смежными вершинами степени 3, 3.

5. Начнем анализировать полученную информацию, начнем рассматривать с вершины F. Найдем в таблице вершину степени 2, которая соединена с 2 вершинами степени 3. Это номер 1, значит F – 1. Тогда по остатку заметим, что вершинам A, E соответствуют вершины 6, 7. Теперь заметим, что F соединена с вершинами B, G. Вершина B соединена с вершинами степени 3, 3, 2, а вершина G с вершинами степени 3, 2, 2. Рассмотрим таблицу, вершина F соединена с вершинами 4, 5. Заметим, что вершина 4 соединена с вершинами 1, 2, 7. Значит вершине G соответствует номер 4, тогда вершине B соответствует номер 5. Заметим, что вершины B, G имеют 2 общие смежные вершины F и C. Вернемся к таблице, вершины G, B смежные с вершинами 1, 2, 7 и 1, 2, 3, мы знаем, что номер 1 соответствует вершине F, тогда вершине C соответствует номер 2. Теперь мы можем понять, что вершине A соответствует номер 7, а вершине D соответствует номер 3. Вернемся к условию, нам нужно найти сумму длин ребер D – B, A – E. Длина A – E равна 39, а длина D – B равна 53, а их сумма равна 92.

Источник: ЕГЭ-2022. Досрочная волна.

Однозначные соотнесения таблицы и графа

Пример 2.1:

В этой задаче от нас требуется определить длину ребра B – E.

Пройдемся по нашему алгоритму

1. А — 2, Б — 2, В — 5, Г — 3, Д — 2, Е — 4, К — 2.

2. В этой задаче у нас получается 4 группы А, Б, Д, К со степенью 2, Г со степенью 3, Е со степенью 4 и В со степенью 5.

3. В этой задаче нам повезло, у нас сразу 3 вершины с уникальной степенью, значит для них мы можем однозначно определить их номер в таблице. Таким образом вершине В соответствует номер 6, вершине Е соответствует номер 4, вершине Г соответствует номер 2, тогда по остатку вершинам А, Б, Д, К соответствуют номера 1, 3, 5, 7.
Заметим, что 4 и 5 пункт мы можем пропустить, потому что мы уже знаем номера вершин В и Е и можем просто в таблице посмотреть длину их ребра, она равняется 20.

Источник: ЕГЭ-2016. Демонстрационный вариант.

Пример 2.2:

В этой задаче нам необходимо найти длину ребра Д — Е.

Пройдемся по пунктам алгоритма.

1. А — 1, Б — 4, В — 2, Г — 2, Д — 3, Е — 3, Ж — 5.

2. Заметим, что вершины Д, Е единственные вершины степени 3, значит мы можем понять, что им соответствуют номера 2 и 6. И сразу же получить, что длина ребра равна 25.

Источник: ЕГЭ-2017. Досрочная волна.

Пример 2.3:

В этой задаче нам необходимо найти длину ребра А — Г.

1. А — 3, Б — 1, В — 4, Г — 4, Д — 2, Е — 1, К — 1.

2. У нас 4 группы, Б, Е, К имеют степень 1, Д имеет степень 2, А имеет степень 3, Г, В имеет степень 4.

3. Мы можем точно определить, что Д соответствует номер 4, вершине А соответствует номер 3, вершинам Г, В соответствуют номера 2, 5, вершинам К, Б, Е соответствуют номера 1, 6, 7.

4. Рассмотрим вершины В, Г. Заметим, что вершина Г соединена с вершиной Д. Вершина Д имеет номер 4, она соединена с вершинами 3 и 5, номеру 3 соответствует вершина А, значит вершине Г соответствует номер 5.

5. Теперь мы знаем номера вершин А, Г, их ребро равно 6.

Источник: ЕГЭ-2018. Демонстрационная версия.

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

Теперь давайте рассмотрим несколько заданий по теме алгоритм Декстера. Они отличаются от рассмотренных ранее, поэтому прошлый алгоритм здесь не подходит. Но у нас для этого задания есть алгоритм Декстера. Для начала введем новые определения

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

2. Обработка вершины — вычисление метки этой вершины.

Алгоритм Декстера:

1. Нарисовать начальную вершину нашего пути и сопоставить ей значение 0. Нарисовать все смежные с ней вершины и обработать их.

2. Поэтапная обработка всех вершин начиная с вершины с наименьшей меткой.

3. Когда все вершины обработаны, мы можем получить ответ.

Давайте научимся пользоваться этим алгоритмом на примере задач.

Алгоритм Декстера

Пример 3.1:

В этой задаче нам нужно найти длину кратчайшего маршрута из A в F.

Перед тем, как использовать алгоритм заметим, что из вершины С выходить 1 ребро. Это значит, что использовать вершину в пути от A до F не имеет смысла, потому что через нее пройти в другую вершину у нас не получится, а заходить и выходить не имеет смысла, поэтому будем строить граф без вершины C. Теперь можно воспользоваться алгоритмом.

1. Начнем наш путь из точки А, вершины B, D, F являются смежными для А, для каждой из этих вершин найдем их метку, так как мы только строим граф, то метка каждой вершины равняется длины ребра, соединяющего эту вершину с А.

2. Дорисуем все оставшиеся вершины. Заметим, что кратчайшее ребро в таблице имеет длину 2, значит до точки B нельзя добраться по пути короче, чем 2. Значит, можем считать, что точка В обработана. Сейчас нам нужно обработать вершину D. Чтобы попасть из точки А в точку D мы можем пойти 3 способами. Пройти напрямую из А в D, тогда длина маршрута будет 4. Пройти через точку F, тогда путь будет равен 36. Пройти через точку B, тогда путь будет равняться минимум 4 (2+2), потому что нам потребуется пройти хотя бы 2 дороги, а минимальная длина дороги равняется 2. Из этих трех вариантов наименьший путь имеет длину 4, значит у точки D метка равняется 4. Сейчас можем сказать, что мы нашли более короткий путь в точку F через вершину D, значит можем метку F уменьшить до 24.

Теперь рассмотрим вершину Е. В нее можно попасть 3 способами из точек B, D, F. Если мы пойдем из точки В, тогда путь будет равен 12, если пойдем из точки D, тогда путь будет равен 7, если пойдем из точки F, тогда путь будет равен 27. Значит можем сделать вывод, что метка Е равняется 7. И последний этап обработать точку F. В нее мы можем попасть из точек A, D, E. Если мы пойдем из точки А, тогда путь будет равен 36, если пойдем из точки D, тогда путь будет равен 24, если пойдем из точки Е, тогда путь будет равен 10. Значит метка вершины F равняется 10. Значит кратчайший путь из А в F будет также равняться 10.

Источник: ЕГЭ-2017. Демонстрационный вариант.

Пример 3.2:

В этой задаче также нужно найти кратчайший путь из A в F.

Заметим, что вершина В имеет степень 1, значит мы можем смело ее не учитывать. Также заметим, что вершина F тоже имеет степень 1 и в F можно попасть только из вершины Е, значит можем вычислить метку Е и прибавить длину ребра в F. Теперь можно воспользоваться алгоритмом.

1. Построим вершину А и все смежные с ней. Построим метки для получившихся вершин.

2. Дорисуем оставшиеся ребра и начнем их обрабатывать. Заметим, что кратчайший путь равняется 3. Начнем обрабатывать вершину D. в нее мы можем попасть из вершины А и Е. Если мы пойдем из вершины А, то путь будет равняться 3, а если из вершины Е, то путь будет состоять минимум из 2 ребер, значит их длина будет равна 6. Значит метка D равняется 3. Теперь сразу перейдем к обработке вершины Е. В нее мы можем попасть из D, А или C, если пойдем из D, тогда длина маршрута будет составлять хотя бы 7. Если мы пойдем из А, тогда маршрут будет равен 8. И рассмотрим оставшийся вариант, когда мы идем из вершины С, в вершину С можно попасть из Е и А, но если мы попадаем из Е, а потом обратно идем в Е, то это полная бессмыслица, значит рассмотрим вариант, что мы идем в С из А, тогда путь А до Е будет составлять 14. Тогда метка Е равняется 7. Теперь нам остается к 7 прибавить длину пути Е — F, равный 4. Значит метка вершины F равняется 11, значит кратчайший путь A – F равняется 11.

Источник: ЕГЭ-2019. Досрочная волна.

Полезные факты

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

2. Таблица симметрична относительно диагонали из верхнего левого угла в правый нижний, поэтому если в правой верхней половине у вас 5 звездочек, то и нижней левой у вас тоже будет 5. Это может пригодиться, если вы переписываете таблицу на листочек.

3. Если это задача на алгоритм Декстера и у вас есть вершина степени 1, которая не является началом или концом пути, то можно не рассматривать эту задачу.

2 задание

В этой задаче составители хотят проверить наше умение строить таблицы истинности и логические схемы. Давайте разберёмся с основными терминами, которые могут понадобиться для понимания задачи.

Алгебра логики (булева алгебра) — это раздел математики, который занимается операциями и правилами, применяемыми к логическим выражениям. В алгебре логики рассматриваются высказывания, которые могут быть либо истинными, либо ложными, и на основе таких высказываний выполняются различные логические операции, такие как «и», «или», «не» и другие.

Логические высказывания — это утверждения, о которых можно однозначно сказать, истинны они или ложны. В логике каждое высказывание рассматривается как объект, имеющий одно из двух возможных значений: истина (1 или True) или ложь (0 или False). Такие высказывания выражают какую-либо мысль или факт, который можно проверить.

Примеры логических высказываний: «Сегодня идет дождь» (которое может быть истинным или ложным в зависимости от погоды), «5 больше 3» (всегда истинное) или «2 умножить на 3 равно 7» (всегда ложное). Напротив, фразы вроде «Какой красивый день!» или «Я хочу мороженое» не являются логическими высказываниями, так как у них нет определенного значения истинности.

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

Логические высказывания могут комбинироваться друг с другом с помощью логических операций:

1. Конъюнкция (логическое «И»)

Обозначения: A ∧ B, A ⋅ B, A & B, A ∩ B, A and B, AB

Конъюнкция, или логическое «И», — это операция, которая возвращает истинное значение только тогда, когда оба высказывания истинны. Если хотя бы одно из высказываний ложно, то и результат будет ложным.

Пример:

• A: «Сегодня солнечно» (истина)

• B: «Температура выше 20°C» (истина)

Результат A ∧ B: истина, если оба утверждения верны, в противном случае — ложь.

Таблица истинности для операции конъюнкции:

2. Дизъюнкция (логическое «ИЛИ»)

Обозначения: A ∨ B, A + B, A ∪ B, A or B

Дизъюнкция, или логическое «ИЛИ», возвращает истину, если хотя бы одно из высказываний истинно. Ложь получается только тогда, когда оба высказывания ложны.

Пример:

• A: «Сегодня солнечно» (истина)

• B: «Сегодня идет дождь» (ложь)

Результат A ∨ B: истина, так как хотя бы одно из утверждений истинно.

Таблица истинности для операции дизъюнкции:

3. Отрицание (логическое «НЕ»)

Обозначения: ¬A, ∼A, Ā, NOT A

Отрицание, или логическое «НЕ», меняет значение истинности высказывания на противоположное. Если исходное высказывание истинно, то результат его отрицания будет ложным, и наоборот.

Пример:

• A: «Сегодня солнечно» (истина)

• Результат ¬A: ложь (т. к. исходное высказывание было истинным).

Таблица истинности для операции отрицания:

4. Импликация (логическое «ЕСЛИ…, ТО…»)

Обозначения: A→B, A⇒B, A⊃B

Импликация — это условное высказывание, которое говорит, что если первое утверждение (предпосылка) истинно, то второе утверждение (следствие) также должно быть истинно. Импликация ложна только в случае, если первое утверждение истинно, а второе ложно; во всех других случаях она считается истинной.

Пример:

• A: «Если идет дождь» (истина)

• B: «Значит, улица мокрая» (истина)

Результат A→B: истина, потому что в случае дождя улица действительно мокрая.

Таблица истинности для операции импликации:

5. Эквиваленция (логическое «РАВНОЗНАЧНОСТЬ»)

Обозначения: A↔B, A⇔B, A≡B

Эквиваленция — это операция, которая возвращает истину, когда оба высказывания имеют одинаковое значение истинности (оба истинны или оба ложны). Если значения истинности высказываний различны, эквиваленция будет ложной.

Пример:

• A: «Сегодня пятница» (истина)

• B: «Завтра суббота» (истина)

Результат A↔B: истина, так как оба утверждения истинны.

Таблица истинности для операции эквиваленции:

Также для решения задачи очень важно помнить про порядок выполнения логических операций:

• Отрицание («НЕ», ¬) — выполняется первым, так как меняет значение истинности конкретного высказывания.

• Конъюнкция («И», ∧) — выполняется следующим, объединяя высказывания так, что результат будет истинен только если оба операнда истинны.

• Дизъюнкция («ИЛИ», ∨) — идет после конъюнкции, объединяя высказывания так, что результат будет истинен, если хотя бы одно из них истинно.

• Импликация («ЕСЛИ…, ТО…», →) — выполняется после конъюнкции и дизъюнкции, связывая условие и следствие.

• Эквиваленция («РАВНОЗНАЧНОСТЬ», ⇔) — выполняется последней, проверяя равенство значений истинности двух высказываний.

Также для решения этого задания могут понадобиться основные законы алгебры логики:

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

1. Определи количество переменных: сначала определите, сколько логических переменных используется в выражении (например, A, B, C).

2. Найди число строк: для n переменных потребуется 2^n строк, поскольку каждая переменная может принимать одно из двух значений (0 или 1), и нужно учитывать все возможные комбинации. Например, для двух переменных A и B потребуется 2^2 = 4 строки, а для трех переменных 2^3 = 8.

3. Заполни колонки переменных: создайте отдельные колонки для каждой переменной и начните заполнять их значениями 0 и 1. Распределяйте значения так, чтобы каждая переменная менялась с разной частотой:

o Для первой переменной чередуйте значения через одну строку (0, 1, 0, 1…).

o Для второй — через две строки (0, 0, 1, 1…).

o Для третьей — через четыре строки (0, 0, 0, 0, 1, 1, 1, 1…), и так далее.

4. Вычисли промежуточные результаты: если логическое выражение сложное и содержит несколько операций, добавьте столбцы для промежуточных операций, таких как ¬A, A ∧ B, A ∨ B, и заполните их значениями для каждой строки. Не забывайте про порядок выполнения логических операций!

5. Рассчитай итоговое выражение: после заполнения всех промежуточных столбцов определите значение итогового выражения для каждой строки, используя уже вычисленные значения. Запишите полученные значения в последний столбец таблицы.

6. Проверь правильность: убедитесь, что каждая комбинация возможных значений переменных и соответствующие результаты выражения указаны верно.

Таким образом, таблица истинности будет наглядно показывать, каким будет результат логического выражения для каждой возможной комбинации входных значений.

Перейдём к примеру решения прототипов задач:

Разберём задачу №2 ЕГЭ 2024 из демоверсии ФИПИ:

Миша заполнял таблицу истинности логической функции F:

(x ∧ ¬y) ∨ (y ≡ z) ∨ ¬w

но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.

Определите, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.

Способ 1: программирование (python)

С помощью программы мы будем перебирать все возможные комбинации нулей и единиц (каждая наша переменная соответствует 0 или 1) и выводить те комбинации, при которых наша функция F будет равно 0 (требуется в условии в последнем столбце).

1. Нам нужно понять, каким символам в python соответствуют наши логические операции:

• Отрицание («НЕ», ¬) — в языке программирования это просто not
• Конъюнкция («И», ∧) — в python мы напишем and
• Дизъюнкция («ИЛИ», ∨) — соответствует or
• Импликация («ЕСЛИ…, ТО…», →) — пишем <= (почему это правда можно понять, составив таблицу истинности для <=, она будет совпадать с таблицей истинности для импликации)
• Эквиваленция («РАВНОЗНАЧНОСТЬ», ≡) — в языке программирования это будет ==

2. Открываем нашу среду разработки (IDLE или PyCharm)

3. Пишем шаблонный код:

В первой строчке мы просто выводим наши переменные, чтобы было удобно определять, какой столбец соответствует какой переменной.

Дальше идёт вложенный цикл, в котором мы перебираем значения для каждой переменной (range (2) – это массив, который состоит из 2х значений: 0 и 1, которые и требуются для решения задачи).

Переписываем выражение из условия задачи, используя инструменты языка программирования, не забываем, как в python выглядят наши логические операции. В цикле if проверяем, равно ли наше выражение 0 (требуется по условию) и выводим только те строчки таблицы истинности, которые соответствуют нашему условию.

Важный момент: если вы не уверены, что язык программирования верно выполнит порядок логических операция, то лучше везде расставить скобки!!!

4. Смотрим на вывод нашей программы:

5. Сейчас нам нужно сопоставить таблицу из условия с результатом выполнения нашего кода:

Заметим, что в первых двух столбцах в условии совпадают значения (0, 0 и 1, 1), но в нашей программе таких совпадений несколько, тогда мы можем просто предположить, что нужные нам переменные это w и z:

Внесём в таблицу эти значения:

6. Тогда теперь мы видим, что последнему столбцу может соответствовать только переменная x, так как у y не может быть два нуля, следовательно в третьем столбце остаётся y:

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

Ответ: wzyx

Способ 2: аналитический

Мы просто перепишем наше выражение, используя тот факт, что конъюнкция (∧) – это логическое умножение, дизъюнкция (∨) – это логическое сложение, а для остальных операций будем перебирать все возможные комбинации.

1. Перепишем выражение из условия:

(x * ¬y) + (y == z) + ¬w = 0

2. Перебираем все возможные варианты:

по выражению видно, что это сумма, состоящая из трёх слагаемых, которая должна быть равно 0, тогда каждое из слагаемых тоже должно быть равно 0.

3. ¬w = 0, тогда w всегда должно быть равно 1.

(y == z) = 0, тогда или y = 1, z = 0, или наоборот (смотрим таблицу истинности для эквиваленции)

(x * ¬y) = 0, тогда или x = 0, ¬y = 1 (y = 0), или x = 0, ¬y = 0 (y = 1), или x = 1, ¬y = 0 (y = 1)

4. Но нам важно помнить, что наши переменные в каждом слагаемом в одном случае – это всё ещё одна переменная, то есть если в первом слагаемом y = 0, то во втором он не может стать равным 1!

5. Составляем таблицу истинности:

6. Аналогично предыдущему способу решения сопоставляем таблички, пишем ответ.

Ответ: wzyx

 

Разберём задание с основной волны (08.06.24) прошлого года:

Миша заполнял таблицу истинности логической функции F = (y → ¬(x → z)) ∨ w, но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.

Определите, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.

Решим программированием:

1. Набираем программу, аккуратно переписывая выражение из условия, правильно расставляя скобки и обращая внимание, что наша функция должна быть равна 0 (столбец F). Помним, что импликация заменяется <=:

2. Сравниваем вывод программы с таблицей из условия:

3. Предположим, что первому столбцу соответствует x (поскольку 0 и 1 содержат только столбцы x и z), тогда второму столбцу будет соответствовать z.

4. Столбец y содержит только единицы, значит он может быть только 3-м, ну и остаётся w на 4-й позиции.

5. Заполняем таблицу и сравниваем, с результатом работы нашей программы:

6. Мы видим, что получившаяся таблица совпадает с выводом программы, значит мы предположили верно, если бы мы ошиблись в предположении переменные x и z нужно было бы поменять местами.

Ответ: xzyw

Дальше разберём задание из варианта с основной волны 19.06.24 (Центр):

Миша заполнял таблицу истинности логической функции

F = ¬(x → z) ∨ (y ≡ w) ∨ y

но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.

Определите, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.

Решим аналитикой:

1. Перепишем выражение из условия, используя тот факт, что конъюнкция (∧) – это логическое умножение, дизъюнкция (∨) – это логическое сложение, а для остальных операций будем перебирать все возможные комбинации:

¬ (x <= z) + (y == w) + y = 0

2. Перебираем все возможные варианты:

по выражению видно, что это сумма, состоящая из трёх слагаемых, которая должна быть равно 0, тогда каждое из слагаемых тоже должно быть равно 0.

3. y всегда равен 0; (y == w) = 0, тогда они всегда должны отличаться: y = 0, w = 1 или наоборот; (¬ (x <= z)) = 0, тогда (x <= z) = 1, т.е. если x = 1, z = 1, если x = 0, z = 0 или 1.

4. Составляем нашу таблицу, но нам важно помнить, что наши переменные в каждом слагаемом в одном случае – это всё ещё одна переменная, то есть если в первом слагаемом y = 0, то во втором он не может стать равным 1!

5. Сопоставляем табличку с условием, видим, что на 4-й позиции находится w (т.к. там должны быть только единицы), на 3-й позиции y (т.к. там должны быть только нули); теперь мы видим, что когда в первом столбце стоит 1, во втором должен быть 0, такое возможно только в том случае, если z находится на первой позиции, а x на второй.

6. Заполняем таблицу из условия, сравниваем с нашей, пишем ответ.

Ответ: zxyw

Ещё одно задание из варианта с основной волны, но регион Сибирь:

Миша заполнял таблицу истинности логической функции

(¬x ∧ y ∧ z ∧ ¬w) ∨ (¬x ∧ y ∧ ¬z ∧ ¬w) ∨ (x ∧ y ∧ z ∧ ¬w)

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

Определите, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.

Решим программированием:

1. Набираем программу, аккуратно переписывая выражение из условия, правильно расставляя скобки и обращая внимание, что наша функция должна быть равна 1 (столбец F):

2. Сравниваем вывод программы с таблицей из условия:

3. Сопоставляем табличку с условием, видим, что на 4-й позиции находится y (т.к. там должны быть только единицы), на 2-й позиции w (т.к. там должны быть только нули); теперь мы видим, что когда в первом столбце стоит 0, в третьем должна быть 1, такое возможно только в том случае, если x находится на первой позиции, а z на третьей.

4. Заполняем таблицу и сравниваем, с результатом работы нашей программы:

Ответ: xwzy

 

Задание с основной волны 04.07.24:

Миша заполнял таблицу истинности логической функции

F = (z → ¬(y → x)) ∨ w

но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.

Определите, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.

Решим аналитикой:

1. Перепишем выражение из условия, используя тот факт, что конъюнкция (∧) – это логическое умножение, дизъюнкция (∨) – это логическое сложение, а для остальных операций будем перебирать все возможные комбинации:

(z <= ¬ (y <= x)) + w = 0

2. Перебираем все возможные варианты:
по выражению видно, что это сумма, состоящая из двух слагаемых, которая должна быть равно 0, тогда каждое из слагаемых тоже должно быть равно 0.

3. w всегда равен 0; (z <= ¬ (y <= x)) = 0, тогда если z = 0:

1)¬ (y <= x) = 0 или 2) ¬ (y <= x) = 1:

1) y <= x = 1, тогда если y = 0, x = 0 или 1, если y = 1, x = 1;

2) y <= x = 0, тогда если y = 0, x не существует (вариант нам не подходит), а если y = 1, x = 0

4. Если z = 1: ¬ (y <= x) = 1, тогда смотрим вариант 2 выше.

4. Составляем нашу таблицу, но нам важно помнить, что наши переменные в каждом слагаемом в одном случае – это всё ещё одна переменная, то есть если в первом слагаемом y = 0, то во втором он не может стать равным 1!

5. Сопоставляем табличку с условием, видим, что на 1-й позиции находится z (т.к. там должны быть только единицы), на 4-й позиции w (т.к. там должны быть только нули); теперь мы видим, что когда во втором столбце стоит 0, в третьем должна быть 1, такое возможно только в том случае, если y находится на второй позиции, а x на третьей.

6. Заполняем таблицу из условия, сравниваем с нашей, пишем ответ.

Ответ: zyxw

 

Посмотрим вторую досрочную волну 2023-го года:

Миша заполнял таблицу истинности логической функции

F = ¬(y ∧ ¬x) ∧ ¬(x ≡ z) ∧ w

но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.

Определите, какому столбцу таблицы соответствует каждая из переменных w, x, y, z. В ответе напишите буквы w, x, y, z в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу; затем буква, соответствующая второму столбцу и т.д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.

Решим программированием:

1. Набираем программу, аккуратно переписывая выражение из условия, правильно расставляя скобки и обращая внимание, что наша функция должна быть равна 1 (столбец F):

2. Сравниваем вывод программы с таблицей из условия:

3. Видим, что последнему столбцу соответствует w (т.к. должны быть только единицы). Предположим, что на 1-й позиции стоит y (должно быть 2 нуля), тогда на 3-й стоит z (должно быть 2 нуля), а на 2-й стоит x.

4. Заполняем таблицу и сравниваем, с результатом работы нашей программы:

5. Мы видим, что получившаяся таблица совпадает с выводом программы, значит мы предположили верно, если бы мы ошиблись в предположении переменные y и z нужно было бы поменять местами.

Ответ: yxzw

 

Основная волна 2023 (вторая):

Миша заполнял таблицу истинности логической функции

F = (y → x) ∧ ¬z ∧ w

но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.

Определите, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.

Решим аналитикой:

1. Перепишем выражение из условия, используя тот факт, что конъюнкция (∧) – это логическое умножение, дизъюнкция (∨) – это логическое сложение, а для остальных операций будем перебирать все возможные комбинации:

(y <= x) * ¬z * w = 1

2. Перебираем все возможные варианты:
по выражению видно, что это произведение, состоящая из трёх множителей, которое должна быть равно 1, тогда каждый из множителей тоже должен быть равен 1.

3. w всегда равен 1; z всегда равен 0 (т.к. ¬z = 1); (y <= x) = 1, тогда если y = 0, x = 0 или 1, если x = 1, y = 1

4. Составляем нашу таблицу, но нам важно помнить, что наши переменные в каждом слагаемом в одном случае – это всё ещё одна переменная, то есть если в первом слагаемом y = 0, то во втором он не может стать равным 1!

5. Сопоставляем табличку с условием, видим, что на 4-й позиции находится z (т.к. там должны быть только нули), на 2-й позиции x (т.к. там должны быть 2 единицы и ноль); теперь мы видим, что на 1-й позиции может быть только w (одни единицы), на 3-й позиции остаётся y.

6. Заполняем таблицу из условия, сравниваем с нашей, пишем ответ.

Ответ: wxyz

 

Основная волна 2023 (третья):

Миша заполнял таблицу истинности логической функции

F = (x → (z ≡ w)) ∨ ¬(y → w)

но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.

Определите, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.

Решим программированием:

1. Набираем программу, аккуратно переписывая выражение из условия, правильно расставляя скобки и обращая внимание, что наша функция должна быть равна 0 (столбец F):

2. Сравниваем вывод программы с таблицей из условия:

3. Видим, что последнему столбцу соответствует x (т.к. должны быть только единицы). Предположим, что на 3-й позиции стоит y (должно быть 2 нуля), тогда на 2-й стоит w (т.к. когда y = 0, w = 0, а когда y = 1, w тоже = 1), а на 1-й стоит z.

4. Заполняем таблицу и сравниваем, с результатом работы нашей программы:

5. Мы видим, что получившаяся таблица совпадает с выводом программы, значит мы предположили верно, если бы мы ошиблись в предположении переменные y и z нужно было бы поменять местами.

Ответ: zwyx

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

Что важно знать:

1. Выучить шаблон кода.

2. Запомнить таблицы истинности для каждой логической операции.

3. Запомнить порядок выполнения операций.

Python идеально подходит для проверки и автоматизации работы с таблицами истинности. Для каждой логической операции в Python есть встроенные операторы:

o «НЕ» — not

o «И» — and

o «ИЛИ» — or

o Импликация — <= (можно использовать для простоты, так как ≤\leq≤ соответствует логике импликации)

o Эквиваленция — ==

Шаблон для запоминания порядка операций:

Можно запомнить порядок выполнения операций с помощью аналогии с математикой. Например: сначала выполняется отрицание (как изменение знака в алгебре), затем идут операции конъюнкции и дизъюнкции, затем — импликация и эквиваленция. Чтобы избежать ошибок, лучше всегда использовать скобки, особенно в длинных выражениях.

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

3 задание

Третье задание проверяет учеников на понимание основных принципов баз данных и на работу с ними. В каждом задании мы должны будем сопоставлять информацию из разных таблиц.

Чтобы решить эту задачу, необходимо разбираться в таблицах. Давайте познакомимся с программой Excel и выучим все функции, которые нам пригодятся.

Весь интерфейс Excel – таблица и верхняя лента с огромным количеством различных функций и настроек.

Для начала давайте разберем саму таблицу и что с ней можно делать.

Самое простое – мы можем записывать данные в каждую клеточку.

В этом примере мы записали слово мир в клетку B2, цифру 3 – C4. Понимание как находить координату клетки поможет нам в решении задач.

Основным инструментом Excel, которым вы будет пользоваться постоянно, является знак равно.

На примере выше мы написали знак равно, а после него добавили простое арифметическое выражение. Но это не все чем может похвастаться этот символ.

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

Еще одна важная часть решения каждой задачи – функции.

Как вызывать функции:

1. Вы пишите знак “=”, прописываете название функции и в скобочки вносите аргументы.

После нажатия на Enter, функция записывает в клетку результат.

2. Вы нажимаете на кнопку функций.

И ищете нужную вам функцию.

Функций в Excel очень много и все они уникальны, но для решения егэ нам нужны будут всего несколько:

Функция =СУММ() – суммирует все выделенные числа.

Функция =МАКС() =МИН() находят максимальный и минимальный элемент соответственно.

Стоит еще упомянуть, что мы можем выделить сразу несколько клеточек, а не нажимать на каждую.

С другими функциями вы познакомитесь дальше на курсе при подготовке к другим задачам.

Еще одним инструментом для решения 3 задачи станет фильтр.

Чтобы использовать фильтр, выделите столбики, по которым вы хотите фильтровать, найдите сверху пункт Сортировка и фильтр и нажмите фильтр.

У вас появятся настройки фильтрации.

Здесь мы можем отображать только те строки, которые нам нужны.

Далее давайте пройдем функцию =ЕСЛИ(), которую можно использовать почти в каждой задаче.

Логическое выражение – условие, которые мы хотим задать этой функции. Например, в соседней клетке слева написано слово “черное”.

Дальше через “;” мы указываем значение, которое будет в этой клетке, если условие верно, и какое значение мы запишем, если условие не верно.

Чаще всего используется шаблон: истина = 1, ложь = 0.

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

Заметим, что в последней клетке в условии написано A4 = “черное”, хотя мы писали A1 = “черное”. Клетка сместилась, потому что мы передвинули функцию. В этом особенность Excel – он автоматически переставляет клетки в функциях.

Если мы не хотим, чтобы какие-то клетки смещались, выделим их и нажмем f4 (удобно смотреть на саму функцию в верхнем поле, а не в клетке).

И протянем на все оставшиеся строчки.

Теперь наша клетка A1 не изменяется.

И самое последнее, что мы должны изучить перед решением задач – функция ВПР (вертикальный просмотр). Чаще всего ее применяют в задачах повышенной сложности, но на самом деле она очень проста. Давайте разберемся что она делает.

У нас есть две таблицы. Неважно, о чем они, важно то, что во второй таблице у нас есть поле цена, которое пусто, но первая таблица дает нам соответствие цены каждому типу товара.

Функция ВПР в данном случае нужна, чтобы заполнить столбик “Цена” значениями из другой таблицы.

Пишем =ВПР( ). Excel подсказывает нам какие аргументы нужно добавить.

Искомое значение – по каким данным мы будем искать. Указываем клетку с типом товара.

Таблица – в какой таблице мы будем искать новые данные. ВАЖНО: мы должны выделить таблицу так, чтобы в первом столбце мы нашли наше искомое значение. Не забудьте нажать f4, это закрепит наше выделение и не даст таблице съехать.

Номер столбца – пишем номер столбца откуда мы будем брать информацию из выделенной таблицы (Не номер столбца глобально, а именно в выделенной таблице). В нашем примере – 2.

Интервальный просмотр – просто пишем 0.

У нас получилось взять данные из другой таблицы, но только для одной клетки. Потяните за маленький квадрат справа-снизу клетки вниз или дважды нажмите для него, чтобы скопировать эту функцию на другие строчки.

Мы изучили достаточный инструментарий программы excel для решения задач.

Алгоритм решения задач для каждого задания индивидуальный, но в основном имеет следующие опорные точки:

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

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

1. Пример 3.1.xlsx

В качестве первого примера решим задачу с фрагментом базы данных «Продукты».

В таблице есть три листа:

Лист “Движение товаров”:

“Товар”:

“Магазин”:

По условию задачи нам надо определить, на сколько увеличилось количество упаковок яиц диетических, имеющихся в наличии в магазинах Заречного района за период с 1 по 10 июня.

На сколько увеличилось количество товара мы сможем узнать на странице “движение товара”, но мы не знаем артикул яиц диетических и ID магазинов Заречного района.

1. На странице “Товар” находим нужный нам товар и запоминаем его артикул.

Артикул нужного нам товара = 15.

2. На странице “Магазин” включаем фильтрацию и находим магазины Заречного района.

ID магазинов, которые нам подойдут = М3, М9, М11 и М14.

3. Переходим на лист “Движение товаров” и выставляем нужные фильтры.

Не забываем проверить даты. В задаче нас спрашивают период с 1 по 10 июня. В данном случае все даты совпадают, иначе мы бы применили фильтр и вывели только нужные нам.

Заметим, что нумерация строк (числа слева) сбилась. Это происходит из-за того, что фильтрация просто скрывает ненужные нам строки. Мы можем удостовериться в этом, просто посчитав сумму цен, выделив все эти числа.

Чтобы решить это, скопируем эти нужные нам строки и вставим их в новый лист.

Знаки ##### означают, что текст не влезает в клетку, но на решение это не влияет. Если это доставляет нам дискомфорт, мы можем расширить столбик.

4. Теперь давайте разделим с помощью фильтров все операции на поступление и продажу и перенесем их на разные листы.

На каждом листе посчитаем сумму количества упаковок с помощью функции =СУММ().

Здесь мы получили 454.

А на листе с поступлениями – 1420.

Так как нас спрашивают насколько увеличилось количество упаковок яиц, посчитаем выражение вида:

все поступления – все продажи = ответ;

1420 – 454 = 966 – ответ на данную задачу.

2. Пример 3.2.xlsx

В файле приведён фрагмент базы данных «Продукты», содержащей информацию о поставках товаров и их продаже. База данных состоит из трёх таблиц.

Таблица «Торговля» содержит записи о поставках и продажах товаров в магазинах города в июне 2021⁠г.

Таблица «Товар» содержит данные о товарах.

Таблица «Магазин» содержит данные о магазинах.

Нам нужно определить магазин, продавший за месяц наибольшее количество лапши гречневой.

1. Смотрим артикул лапши гречневой на листе “Товар” – 63.

2. Фильтруем все операции на странице “Торговля” по артикулу 63 и по операции продажа (потому что надо определить магазин, продавший за месяц наибольшее количество).

Копируем все оставшиеся строки на отдельный лист и получаем:

3. Далее нам надо найти магазин, совершивший наибольшее количество операций. Для этого мы сортируем столбик “Магазин” по возрастанию, чтобы наши магазины шли последовательно.

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

4. В соседнем пустом столбце напишем функцию ЕСЛИ: если магазин в этой строчке совпадает с магазином в предыдущей строчке, тогда значение в этой клетке будет равняться значению в предыдущей клетке + количество упаковок, иначе – значение в клетке равняется количеству упаковок. В первой строчке мы просто перепишем количество упаковок, это будут нашими стартовыми данными.

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

5. Найдем максимальное количество продаж и соответствующий магазин с помощью фильтров, сортировке по убыванию.

Получаем, что искомый магазин – М35.

3. Пример 3.3.xlsx

База данных “Продукты”.

Определить сколько килограмм макарон спагетти поступило в магазины Первомайского района за период с 1 по 10 июня включительно.

1. Находим нужный нам товар.

Артикул макарон спагетти – 24.

2. Находим все магазины Первомайского района с помощью фильтров.

Запоминаем М2, М4, М7, М8, М12, М13, М16.

3. Дальше фильтруем по нашим данным страницу “Движение товара” и не забываем поставить фильтр “Тип операции” – “Поступление”.

Переносим все на новый лист.

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

4. Заходим на страницу “Товар” и ищем там единицу измерений и количество в упаковке.

5. Находим сумму количества упаковок с помощью функции СУММ.

Далее мы умножаем сумму на 0,5 и получаем ответ – 620.

4. Пример 3.4.xlsx

В файле приведён фрагмент базы данных «Мебель». База данных состоит из трёх связанных таблиц. Таблица «Материал» содержит записи о видах материала, используемых при изготовлении мебели.

Таблица «Продукция» содержит информацию о номенклатуре выпускаемой мебели.

Таблица «Готовый товар» — информацию об уже мебели. Заголовок таблицы имеет вид.

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

1. Выбираем сразу несколько фильтров на странице “Материал”.

Получаем 4 ID материала: M1, M23, M26, M34.

2. На странице “Продукция” находим стеллаж выставочный и запоминаем его ID товара P45.

3. Фильтруем по ним на странице “Готовый товар”.

4. Общая стоимость = отпускная цена * количество на складке = 849 * 137 + 882 * 169 = 265371.

5. Пример 3.5.xlsx

Стандартная база данных “Продукты”.

Определить сколько рублей потребовалось магазинам Первомайского района для закупки яиц диетических за период с 1 по 10 июня включительно.

1. Яйцо диетическое — 15.

2. Первомайский район – М2, М4, M7, M8, M12, M13, M16.

Тип операции — поступление.

3. Применив все фильтры, получаем.

Расширяем столбик с датами и смотрим, нет ли тех, что не входят в наш интервал.

Видим, что все даты подходят.

4. Считаем итоговую стоимость = цена за штуку * количество упаковок.

Находим сумму функцией =СУММ и получаем 174300.

6. Пример 3.6.xlsx

База данных «Продукты».

Определите магазин, продавший за месяц наибольшее количество чая зелёного.

В ответе запишите ID магазина  — так, как он указан в базе.

1. Артикул зеленого чая – 17.

2. Указав операцию “Продажа” и скопировав данные на другой лист, получаем:

3. Фильтруем столбик магазины по возрастанию.

4. Пишем счетчик количества проданных упаковок через функцию ЕСЛИ.

5. Находим максимум через функцию.

Так как нас попросили номер магазина, найдем строчку с нужным нам магазином по значению счетчика.

Получаем ответ – М20.

7. Пример 3.7.xlsx

База данных «Продукты».

Определить, сколько литров сметаны 15% было продано в магазинах Октябрьского района за период с 1 по 10 июня включительно.

1. Артикул сметаны 15% — 9, в одной упаковке – 0.3 литра.

2. Магазины Октябрьского района – М1, М5, М6, М10, М15.

3. Фильтруем по магазинам, артикулу и типу операции и получаем:

4. Считаем количество упаковок и умножаем на 0.3 литра.

8. Пример 3.8.xlsx

База данных «Продукты».

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

1. Артикулы всех видов кофе – 46, 47, 48.

2. Магазины Октябрьского района – М1, М5, М6, М10, М15.

3. Выручка – сумма дохода без учета расходов, поэтому просто поставим тип операции продажа.

4. В каждой строчке посчитаем цена за штуку * количество упаковок, посчитаем сумму этих чисел и получим 306100.

4 задание

Это задание относится к базовому уровню и направлено на проверку наших навыков в кодировании и декодировании информации. Составители экзамена хотят удостовериться, что мы понимаем основные принципы работы с информацией и умеем правильно её интерпретировать.

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

Кодирование и декодирование информации — это процессы преобразования данных из одного формата в другой. Кодирование переводит информацию из исходной формы в закодированное представление, а декодирование выполняет обратное действие, восстанавливая первоначальный вид данных. Эти процессы используются для передачи, хранения и обработки информации в понятном для машины формате.

Двоичный код — это метод представления данных, где используются только два символа, обычно 0 и 1. Каждый символ называется двоичным разрядом, и такая система применяется в компьютерах и цифровых устройствах.

Таблица с примерами двоичных кодов.

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

Равномерный код — это код, в котором все кодовые слова имеют одинаковую длину. В таком коде каждый символ представляется одинаковым количеством знаков. Например, для букв A, B, C и D можно задать двоичный код: A — 00, B — 01, C — 10, D — 11. Поскольку длина всех кодов одинаковая, этот код считается равномерным.

Неравномерный код — это код, в котором кодовые слова имеют разную длину. Такой код используется, если длина кодов для символов может меняться. Пример: для букв A, B, C и D коды могут быть заданы так: A — 00, B — 100, C — 101, D — 1010. В этом случае длина кодов разная, и такой код называют неравномерным.

Таблица сравнения равномерных и неравномерных кодов.

Для наглядности можно добавить таблицу, сравнивающую равномерный и неравномерный коды для тех же символов.


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

Также для решения задачи нам понадобится понимать прямое условие Фано и алгоритм построения бинарного дерева кодирования.

Прямое условие Фано — это правило, обеспечивающее однозначное декодирование для неравномерного кода. Оно гласит, что ни одно кодовое слово не должно быть началом другого. Коды, которые удовлетворяют этому условию, называются префиксными.

Пример таблицы истинности для условия Фано.

Чтобы визуально показать, что ни один код не является префиксом другого, можно использовать такую таблицу.


Здесь видно, что каждый код уникален и не пересекается с другими, что соответствует условию Фано.

Теперь разберёмся, как построить бинарное дерево кодирования, чтобы выбрать минимальные кодовые слова для оставшихся букв, не нарушая условия Фано.

Бинарное дерево кодирования — это структура данных, где каждый узел может иметь не более двух «потомков»: левого и правого. В бинарном дереве каждый путь от корня до узла формирует уникальный код для каждого символа. Это упрощает выбор кодов, которые не будут являться префиксами других кодов, что соответствует прямому условию Фано.

Алгоритм построения бинарного дерева кодирования:

  1. Определить корневой узел — выбрать начальный элемент, который станет корнем дерева.
  2. Добавить узлы — для каждого нового элемента выбирается путь слева (0) или справа (1), чтобы построить кодовое слово. Если значение меньше текущего узла, узел помещается в левое поддерево, если больше — в правое поддерево.
  3. Продолжить добавление — каждый следующий элемент добавляется на своё место, соблюдая правило префиксного кода.
  4. Закрепить коды для всех букв — после добавления всех известных букв кодирование завершается, и можно найти коды для оставшихся символов, минимизируя длину.

Пример бинарного дерева:

Перейдём к примеру решения прототипов задач:

Разберём задачу №4 ЕГЭ 2024 из демоверсии ФИПИ.

По каналу связи передаются сообщения, содержащие только восемь букв: А, Б, В, Г, Д, Е, Ж и З. Для передачи используется двоичный код, удовлетворяющий условию Фано. Кодовые слова для некоторых букв известны:

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

В ответе запишите суммарную длину кодовых слов для букв Ж и З.

Способ 1: аналитический

1. В задаче на экзамене будет сказано, что такое условие Фано, но на всякий случай давайте вспомним, что это: это условие гласит, что ни одно кодовое слово не должно быть началом другого. Нам нужно выбрать коды для букв Ж и З, чтобы длина была минимальной и условие Фано соблюдалось.

2. Анализируем условие нашей задачи: нам известны кодовые слова для некоторых букв. Важно обращать внимание, что от нас требуют, в условии может быть подвох, например, если нужно будет обратное условие Фано или сообщения будут содержать не 8 букв, а весь алфавит.

3. Проверяем коды минимальной длины:

Начнём с минимально возможной длины кодов и проверим, какие варианты подходят.

  • Код длиной 1 — «0»:
    Использовать этот код нельзя, так как у нас есть кодовые слова, начинающиеся с «0», например, «000» для буквы А и «0101» для буквы В. Если мы выберем код «0», то условие Фано нарушится, так как «0» является началом других кодов.
  • Код длиной 1 — «1»:
    Этот код также нельзя использовать, так как код «101» для буквы Е начинается с «1».

Значит коды длиной 1 (как «0», так и «1») не подходят, так как оба нарушают условие Фано.

4. Проверяем коды длины 2: всего существует 4 варианта кодов длины 2 («00», «01», «10», «11»)

  • Код «00»: Этот код использовать нельзя, так как он является началом кода «000» для буквы А.
  • Код «01»: Этот код также использовать нельзя, так как он является началом кодов «0101» и «0100» для букв В и Г.
  • Код «10»: Этот код использовать нельзя, так как он является началом кода «101» для буквы Е.
  • Код «11»: Этот код свободен и не является началом ни одного другого кода.

Запоминаем это, но пока не присваиваем коду наши буквы.

5. Проверка кодов длиной 3 для оставшейся буквы: ищем подходящий код среди свободных кодов длиной 3.

  • Код «100»: Свободен и не пересекается с другими кодами (никакие коды не начинаются с «100»).

Только теперь мы можем с уверенностью присвоить код «11» букве Ж, а код «100» букве З. Почему важно не торопиться присваивать нашу букву коду минимальной длины: в нашем примере всё бы удачно получилось, но могло случиться такое, что мы «заблокировали» ветку «11», а следующий свободный код был бы уже длины 5, тогда наш ответ получился бы 7, а если бы мы продолжили ветку «11», то получили бы 2 кода длины 3, что в сумме дало бы 6 и являлось бы правильным ответом. Будьте внимательны!

6. Считаем сумму длин кодовых слов. Для букв Ж и З мы выбрали следующие коды:

  • Ж — 11 (2 разряда)
  • З — 100 (3 разряда)

Суммарная длина кодов составляет 2 + 3 = 5.

Ответ: 5

Способ 2: построение бинарного дерева

1. Строим бинарное дерево, которое будет соответствовать нашему условию задачи (узлы соответствуют буквам, красным крестом обозначаем, что дальше дерево продолжать не можем, потому что не будет выполняться условие Фано):

2. Сейчас мы прекрасно видим, что у нас есть пустые минимальные коды «11» и «100», которые мы можем присвоить нашим буквам Ж и З.

3. Считаем сумму длин кодовых слов. Для букв Ж и З мы выбрали следующие коды:

  • Ж — 11 (2 разряда)
  • З — 100 (3 разряда)

Суммарная длина кодов составляет 2 + 3 = 5.

Ответ: 5

 

Разберём задание №4 из варианта досрочной волны 2024:

По каналу связи передаются шифрованные сообщения, содержащие только восемь букв: А, Б, В, Г, Д, Е, Ж и З. Для передачи используется неравномерный двоичный код. Кодовые слова для некоторых букв известны:

  • А — 10000
  • Б — 1010
  • В — 1101
  • Г — 0110
  • Д — 00010
  • Е — 00000
  • Ж — 1100

Укажите кратчайшее кодовое слово для буквы З, при котором код будет удовлетворять условию Фано. Если таких кодов несколько, укажите код с наименьшим числовым значением.

Решим это задание, построив бинарное дерево:

1. Строим бинарное дерево, которое будет соответствовать нашему условию задачи (узлы соответствуют буквам, красным крестом обозначаем, что дальше дерево продолжать не можем, потому что не будет выполняться условие Фано):

2. По нашему дереву видно, что свободных кодов минимальной длины несколько («001», «010», «111»), по условию нам нужен код с наименьшим числовым значением, значит выбираем «001».

Ответ: 001

 

Дальше посмотрим задачу из варианта с основной волны 07.06.24:

По каналу связи передаются сообщения, содержащие только десять букв: А, Б, Е, И, К, Л, Р, С, Т, У. Для передачи используется неравномерный двоичный код. Для кодирования букв используются кодовые слова:

Укажите кратчайшее кодовое слово для буквы У, при котором код будет удовлетворять условию Фано. Если таких кодов несколько, укажите код с наименьшим числовым значением.

Решим аналитикой:

1. Проверяем коды минимальной длины:

Начнём с минимально возможной длины кодов и проверим, какие варианты подходят.

  • Код длиной 1 — «0»:
    Использовать этот код нельзя, так как у нас есть кодовые слова, начинающиеся с «0», например, «00» для буквы А и «010» для буквы Е. Если мы выберем код «0», то условие Фано нарушится, так как «0» является началом других кодов.
  • Код длиной 1 — «1»:
    Этот код также нельзя использовать, так как код «1011» для буквы К начинается с «1».

Значит коды длиной 1 (как «0», так и «1») не подходят, так как оба нарушают условие Фано.

2. Проверяем коды длины 2: всего существует 4 варианта кодов длины 2 («00», «01», «10», «11»)

  • Код «00»: Этот код использовать нельзя, так как он занят буквой А.
  • Код «01»: Этот код также использовать нельзя, так как он является, например,  началом кода «010» для буквы Е.
  • Код «10»: Этот код использовать нельзя, так как он является, например, началом кода «1001» для буквы Л.
  • Код «11»: Этот код использовать нельзя, так как он является, например, началом кода «1100» для буквы Р.

Значит коды длины 2 не подходят, так как они нарушают условие Фано.

3. Проверяем коды длины 3: пойдём по возрастанию:

«000» и «001» мы использовать не можем, потому что буква А уже «заблокировала» этот путь; «010» занят буквой Е; 011 занят буквой И; «100» не подходит, т.к. с него начинается код для Б, «101» занят буквой С; со «110» начинается код для Т; а вот «111» как раз удовлетворяет условию Фано, то есть подходит нам и является наименьшим подходящим (т.к. все меньшие варианты мы перебрали)

Ответ: 111

 

Перейдём к основной волне 19.06.24 (вариант из Центра России):

По каналу связи передаются сообщения, содержащие только буквы: Б, К, Л, О, Н. Для передачи используется двоичный код, удовлетворяющий условию Фано. Кодовые слова для некоторых букв известны: Б — 1001, К — 11.

Для трёх оставшихся букв Л, Н и О кодовые слова неизвестны. Какое наименьшее количество двоичных знаков требуется для кодирования слова КОЛОКОЛ?

Примечание: Условие Фано означает, что никакое кодовое слово не является началом другого кодового слова. Это обеспечивает возможность однозначной расшифровки закодированных сообщений.

Решим это задание, построив бинарное дерево:

1. Строим бинарное дерево, которое будет соответствовать нашему условию задачи (узлы соответствуют буквам, красным крестом обозначаем, что дальше дерево продолжать не можем, потому что не будет выполняться условие Фано):

2. Нам нужно закодировать ещё 3 буквы: Л, Н и О, но для слова КОЛОКОЛ нам нужны только К, Л и О, и количество двоичных знаков для кодирования слова должно быть наименьшим, т.е. букву Н мы можем закодировать самым длинным кодом (например, «1000»), она нам не нужна для слова.

3. Обращаем внимание на количество букв Л и О в слове КОЛОКОЛ: 2 буквы Л и 3 буквы О, это нам нужно для того, чтобы понять, каким способом мы можем оптимально закодировать наши буквы, то есть букве О можем присвоить код «0», а Л присвоим «101», получим 1*3 + 3*2 = 9 двоичных знаков. Или мы можем продолжить «0»: О присвоим «00», а Л – «01», тогда получим 2*3 + 2*2 = 10 двоичных знаков – этот вариант хуже, потому что он больше, следовательно мы выбираем первый вариант.

4. Вспоминаем, что по условию нам нужна сумма двоичных знаков для слова КОЛОКОЛ, считаем: 1*3 + 3*2 + 2*2 = 13 (К закодирована «11» по условию).

Ответ: 13

 

Теперь давайте разберём задание №4 из варианта основной волны 19.06.24 (Сибирь):

По каналу связи передаются сообщения, содержащие только буквы из набора: А, Т, К, С, Н. Для передачи используется двоичный код, удовлетворяющий условию Фано. Кодовые слова для некоторых букв известны: Н — 11, С — 101.

Для трёх оставшихся букв К, Т и А кодовые слова неизвестны. Какое количество двоичных знаков требуется для кодирования слова КАСАТКА, если известно, что оно закодировано минимально возможным количеством двоичных знаков?

Примечание: Условие Фано означает, что никакое кодовое слово не является началом другого кодового слова. Это обеспечивает возможность однозначной расшифровки закодированных сообщений.

Решим аналитикой:

1. Нам даны кодовые слова для некоторых букв:

  • H кодируется как 11
  • C кодируется как 101

2. У нас остаются три буквы — K, T и A. Так как в задаче требуется минимальное количество двоичных знаков, нам нужно построить кодовые слова для этих букв, минимизируя длину кода. Также нужно удовлетворить условию Фано. Считаем количество этих букв в слове КАСАТКА: А встречается 3 раза, К – 2 раза, и Т – 1. Тогда у буквы А должен быть минимальный код

3. Проверяем возможные варианты: А закодируем «0», тогда для К и Т остаются продолжения «100»: «1000» и «1001», считаем сумму: 3*1 + 2*4 + 1*4 = 15. Есть другой вариант: продолжить «0», закодировать А «00», К «01» и для Т останется «100»: 2*3 + 2*2 + 3*1 = 13 – этот вариант лучше и будет наименьшим, потому что любой другой будет длиннее.

4. Считаем сумму двоичных знаков для слова КАСАТКА: 2*3 + 2*2 + 3*1 + 3*1 = 16 (по условию буква С кодируется «101»). Пишем ответ

Ответ: 16

 

Перейдём к основной волне 2023го года.

Решим это задание, построив бинарное дерево.

По каналу связи передаются шифрованные сообщения, содержащие только восемь букв: А, Б, В, Г, Д, Е, Ж, З. Для передачи используется неравномерный двоичный код. Для шести букв используются кодовые слова:


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

В ответе запишите суммарную длину кодовых слов для букв А и Б.

Примечание: Условие Фано означает, что никакое кодовое слово не является началом другого кодового слова. Это обеспечивает возможность однозначной расшифровки закодированных сообщений.

Решение:

1. Строим бинарное дерево, которое будет соответствовать нашему условию задачи (узлы соответствуют буквам, красным крестом обозначаем, что дальше дерево продолжать не можем, потому что не будет выполняться условие Фано):

2. Мы видим, что свободный узел у нас только один («101»), а закодировать нужно 2 буквы, значит мы его продлеваем до «1010» и «1011» — этим кодам мы и присваиваем наши буквы А и Б.

3. Считаем сумму: 4 + 4 = 8

Ответ: 8

 

Посмотрим досрочную волну того же года:

По каналу связи передаются шифрованные сообщения, содержащие только десять букв: А, Б, В, Г, Д, Е, Ж, З, И, К. Для передачи используется неравномерный двоичный код. Для девяти букв используются кодовые слова:

Укажите кратчайшее кодовое слово для буквы Г, при котором код будет удовлетворять условию Фано. Если таких кодов несколько, укажите код с наименьшим числовым значением.

Решим аналитикой:

1. Перебираем все возможные варианты двоичных кодов по возрастанию:
«0» начало кода буквы А, «1» — начало кода буквы Ж; «00», «01», «10» и «11» — соответственно начала кодов для букв А, Е, И и Ж, то есть тоже не подходят; перебираем коды из 3х знаков: «000» — занято В, «001» — начало А, «010» — начало Е; «011» — начало З, «100» занято К, «101» — занято И, «110» свободно, значит подходит нам и является наименьшим числовым значением, потому что все меньшие мы перебрали.

Ответ: 110

 

Посмотрим вариант с основной волны 2022-го года:

По каналу связи передаются сообщения, содержащие только буквы из набора: А, В, И, Н, Р, Т. Для передачи используется двоичный код, удовлетворяющий условию Фано. Это условие обеспечивает возможность однозначной расшифровки закодированных сообщений. Кодовые слова для некоторых букв известны: Р — 0, Т — 11.

Для четырёх оставшихся букв А, В, И и Н кодовые слова неизвестны. Какое количество двоичных знаков потребуется для кодирования слова ИНВАРИАНТ, если известно, что оно закодировано минимально возможным количеством двоичных знаков?

Решим это задание, построив бинарное дерево:

1.    Строим бинарное дерево, которое будет соответствовать нашему условию задачи (узлы соответствуют буквам, красным крестом обозначаем, что дальше дерево продолжать не можем, потому что не будет выполняться условие Фано):

2.    Считаем количество оставшихся букв (А, В, И, Н) в слове ИНВАРИАНТ: А встречается 2 раза, В – 1 раз, И – 2 раза, и Н – тоже 2 раза.

3.    У нас есть 2 варианта, как минимально закодировать нужные буквы:

1)    Продолжить «100» и «101»:

2)   Зафиксировать «100» и продолжать «101», «1010» присваиваем любой букве кроме В, т.к. В встречается реже всего в слове:

Посчитаем сумму в каждом варианте: 1) 2*4 + 1*4 + 2*4 + 2*4 = 28; 2) 2*3 + 2*4 + 1*5 + 2*5 = 29, значит выбираем первый вариант, поскольку он лучше.

4.    Считаем сумму двоичных знаков для слова ИНВАРИАНТ: 28 + 1*1 + 1*2 = 31 (по условию Р закодировано «0», а Т – «11»)

Ответ: 31

Нужно понимать, что 4я задача ЕГЭ по информатике является задачей базового уровня, она не должна занимать много времени и быть слишком сложной. Все прототипы, которые мы разобрали за разные года не сильно отличаются, нужно просто внимательно читать условие, понимать, что от вас хотят составители. Попробуйте решить задачу двумя способами: аналитически (подбором кодов) и через бинарное дерево. Это поможет убедиться в правильности ответа. Ещё один очень важный момент.

В задаче может быть сказано, что кодируются все буквы русского алфавита, а посчитать нужно сумму знаков для какого-то слова, тогда нам нужно будет просто оставить один свободный узел!

Потому что его можно будет продолжать и кодировать оставшиеся буквы алфавита.

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

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

5 задание

Задание 5 В ЕГЭ по информатике проверяет учеников на понимание принципов различных систем счисления, разрядов и языка программирования Python. В этой задаче нам необходимо найти число, которое мы строим по заданному алгоритму.

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

Давайте разберем все термины и понятия, которые мы будем использовать, решая 5 задачу.

  • Системы счисления

Системы счисления — это способы представления чисел с помощью символов. Существует множество систем счисления, но наиболее распространены десятичная, двоичная, восьмеричная и шестнадцатеричная.

Десятичная

Самая популярная система счисления – десятичная. Ее основание – 10 и состоит она из цифр 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Так, когда мы прибавляем к 9 – наибольшей цифре — единицу, мы пишем на ее месте 0, добавляем следующий разряд (в данном случае второй) и получаем 10. Это очевидно, но подробное понимание этого факта облегчит нам изучение других систем счисления.

Двоичная

Имеет основание 2 и состоит из цифр 0 и 1. Возьмем 1 и прибавим к ней 1, так как 1 — это наибольшая цифра, мы перейдем на следующий разряд и получим 10. Для примера соотнесем числа из десятичной с числами из двоичной:

1 = 1     2 = 10    3 = 11     4 = 100     5 = 101     6 = 110    7 = 111    8 = 1000

Восьмеричная

Имеет основание 8 и состоит из цифр 0, 1, 2, 3, 4, 5, 6, 7. Приведем несколько примеров, где первое число – десятичная система, второе – восьмеричная:

5 = 5     6 = 6     7 = 7     8 = 10     9 = 11     10 = 12     11 = 13     12 = 14

Шестнадцатеричная

Имеет основание 16 и состоит из цифр 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Да, символы A, B, C и т.д. тоже являются цифрами. Они используются, так как мы не можем отобразить, например, число 11 одной цифрой. Приведем несколько примеров, где первое число – десятичная система, второе – шестнадцатеричная:

8 = 8     9 = 9     10 = A     11 = B     12 = C     13 = D     14 = E     15 = F     16 = 10

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

  • Перевод чисел из десятичной системы счисления в другие.

Перевод чисел из десятичной в другие осуществляется с помощью последовательного деления исходного числа на основание новой системы счисления и записывания остатков. Напомним, что у двоичной системы счисления основание – 2, у восьмеричной – 8 и т. д.

Алгоритм таков:

1. Делим число на основание новой системы счисления.

2. Записываем остаток от деления.

3. Продолжаем деление частного от предыдущего деления на основание, пока частное не станет равным 0.

4. Записываем остатки в обратном порядке.

Разберем на примере:

Переведем 25 из десятичной системы в двоичную.

1. 25 ÷ 2 = 12 (остаток 1), записано 1

2. 12 ÷ 2 = 6 (остаток 0), записано 10

3. 6 ÷ 2 = 3 (остаток 0), записано 100

4. 3 ÷ 2 = 1 (остаток 1), записано 1001

5. 1 ÷ 2 = 0 (остаток 1), записано 10011

Частное равно 0, значит пора переворачивать наше записанное число. Получаем 11001 – это и есть 25 в двоичной системе.

Переведем 123 из десятичной системы в восьмеричную.

1. 123 ÷ 8 = 15 (остаток 3), записано 3

2. 15 ÷ 8 = 1 (остаток 7), записано 37

3. 1 ÷ 8 = 0 (остаток 1), записано 371

Переворачиваем и получаем наш ответ – 173.

Переведем число 241 из десятичной системы в шестнадцатеричную.

1. 241 ÷ 16 = 15 (остаток 1), записано 1

2. 15 ÷ 16 = 0 (остаток 15, что соответствует F в шестнадцатеричной системе), записано 1F

Переворачиваем и получаем F1.

  • Перевод из различных систем счисления в десятичные.

Каждый разряд числа в любой системе счисления представляет собой определенную степень основания этой системы. Чтобы перевести число в десятичную систему, нужно умножить каждую цифру числа на основание системы в степени, соответствующей разряду этой цифры, и затем сложить все полученные произведения.

Общий алгоритм:

1. Запишем число и под каждой цифрой укажем ее разряд (степень основания системы счисления).

2. Умножим каждую цифру на основание системы в степени, соответствующей ее разряду.

3. Сложим все полученные произведения.

Разберемся на примерах:

Переведем число 1101 из двоичной системы в десятичную.

1. Запишем число и под каждой цифрой укажем ее разряд (степень двойки):

1 1 0 1 

3 2 1 0

2. Умножим каждую цифру 1101 на 2 в степени, соответствующей ее разряду:

1 * 23 = 1 * 8 = 8

1 * 22 = 1 * 4 = 4

0 * 21 = 0 * 2 = 0

1 * 20 = 1 * 1 = 1

3. Сложим все полученные произведения:

8 + 4 + 0 + 1 = 13

Получим, что 1101 в двоичной системе = 13 в десятичной.

Переведем число 372 из восьмеричной системы в десятичную.

1. Запишем число и под каждой цифрой укажем ее разряд (степень восьмерки):

3 7 2

2 1 0

2. Умножим каждую цифру на 8 в степени, соответствующей ее разряду:

3 * 82 = 3 * 64 = 192

7 * 81 = 7 * 8 = 56

2 * 80 = 2 * 1 = 2

3. Сложим все полученные произведения:

192 + 56 + 2 = 250

Получим, что 372 в восьмеричной системе = 250 в десятичной.

Переведем число A3F из шестнадцатеричной системы в десятичную.

1. Запишем число и под каждой цифрой укажем ее разряд (степень шестнадцати):

A 3 F

2 1 0

2. Умножим каждую цифру на 16 в степени, соответствующей ее разряду:

A (10) * 162 = 10 * 256 = 2560

3 * 161 = 3 * 16 = 48

F (15) * 160 = 15 * 1 = 15

3. Сложим все полученные произведения:

  • 2560 + 48 + 15 = 2623

A3F в шестнадцатеричной = 2623 в десятичной.

Умение переводить числа из различных систем счисления достаточно для решения 5 задания аналитически. Теперь давайте разберемся как решать его через Python.

Чтобы перевести число из десятичной системы счисления в двоичную, восьмеричную и шестнадцатеричную используются функции bin(), oct() и hex() соответственно.

Функции bin, oct и hex возвращают строки, первые два символа в которых указывают на систему счисления. Они нам не понадобятся. Чтобы их убрать, используются срезы. Пишем [ : ] после функции и перед двоеточием в квадратных скобках пишем 2 – номер символа, с которого начнется наша срезанная строка (помним, что в программировании счет начинается с 0).

Если в задаче просят переводить в какую-то другую систему, придется писать собственный алгоритм перевода:

num – исходное число в десятичной системе;

base – основание системы, в которую хотим перевести.

Пока наш num > 0, мы добавляем в переменную result остаток от деления числа на основание и делим число нацело на основание. В конце мы пишем [ : :-1], чтобы перевернуть нашу строку result.

Если нас попросят перевести число в систему с основанием больше 10, то такой алгоритм не сработает, давайте исправим его.

Мы добавили строку digits со всеми возможными символами. Теперь мы добавляем в переменную result не остаток, а элемент из строки digits под индексом остатка. Так, если остаток будет равен 11, мы добавим не ‘11’, а элемент под индексом 11 из строки digits – ‘B’.

Чтобы перевести из любой системы счисления в десятичную, достаточно написать функцию int() и добавить в качестве второго аргумента номер системы, из который мы переводим число.

При решении задачи 5 нам может пригодиться способ нахождения разрядов у числа.

Удобнее всего переводить число в строку функцией str() и находить цифры по индексу. Если указать — , то счет пойдет с конца, но самый последний элемент строки будет иметь индекс -1, а не -0. Помним, что таким способом мы получим цифры в строковом типе. Чтобы перевести их в числа, воспользуемся функцией int().

 

Мы изучили всю нужную теорию для задания 5. Давайте разберем основной алгоритм решения задачи.

1. Перебираем все числа в указанном диапазоне.

2. Строим алгоритм, который описывается в условии задачи.

3. Находим число, которое подходит по условию.

 

Перейдем к решению пятых задач.

1. Демоверсия ЕГЭ 2025

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.

1. Строится двоичная запись числа N.

2. Далее эта запись обрабатывается по следующему правилу:

а) если число чётное, то к двоичной записи числа слева дописывается 10;

б) если число нечётное, то к двоичной записи числа слева дописывается 1 и справа дописывается 01.

Полученная таким образом запись является двоичной записью искомого числа R.

3. Результат переводится в десятичную систему и выводится на экран.

Например, для исходного числа 410 = 1002 результатом является число 2010 = 101002, а для исходного числа 510 = 1012 это число 5310 = 1101012.

Укажите максимальное число R, которое может быть результатом работы данного алгоритма, при условии, что N не больше 12. В ответе запишите это число в десятичной системе счисления.

 

Решим аналитическим способом.

Нам нужно найти такое число N <= 12, что число R, построенное по алгоритму, будет максимальным.

1. Чтобы получить максимальное число, начнем перебирать все числа N с конца (12, 11, 10…).

2. Строим двоичную запись числа N, проверяем ее на четность.

Важно отметить, что четность у числа в десятичном виде и в двоичном одинаковая. Чтобы определить четность у числа в двоичном виде, можно посмотреть на последнюю цифру – если она 1, то число нечетное, 0 – четное.

а) если число чётное, то к двоичной записи числа слева дописывается 10;

б) если число нечётное, то к двоичной записи числа слева дописывается 1 и справа дописывается 01.

В случае б) мы добавим к нашему числу 3 цифры, а значит и три разряда, а в случае а) только два, следовательно, случай б) вернет заведомо большее число. Значит нам нужно, чтобы N было нечетным.

3. Возьмем наибольшее нечетное число – 11. Переведем его в двоичную запись:

11 ÷ 2 = 5 (остаток 1), записано 1

5 ÷ 2 = 2 (остаток 1), записано 11

2 ÷ 2 = 1 (остаток 0), записано 110

1 ÷ 2 = 0 (остаток 1), записано 1101

Переворачиваем и получаем 1011

Дописываем слева 1 и справа 01, получаем 1101101

Переводим это число в десятичную систему:

1 1 0 1 1 0 1

6 5 4 3 2 1 0

1 * 26 = 1 * 64 = 64

1 * 25 = 1 * 32 = 32

0 * 24 = 0 * 16 = 0

1 * 23 = 1 * 8 = 8

1 * 22 = 1 * 4 = 4

0 * 21 = 0 * 2 = 0

1 * 20 = 1 * 1 = 1

64 + 32 + 0 + 8 + 4 + 0 + 1 = 109

Получаем ответ — 109

 

2. Демоверсия ЕГЭ 2024

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.

1. Строится двоичная запись числа N.

2. Далее эта запись обрабатывается по следующему правилу:

а) если число N делится на 3, то к этой записи дописываются три последние двоичные цифры;

б) если число N на 3 не делится, то остаток от деления умножается на 3, переводится в двоичную запись и дописывается в конец числа.

Полученная таким образом запись является двоичной записью искомого числа R.

3. Результат переводится в десятичную систему и выводится на экран.

Укажите минимальное число R, большее 151, которое может быть получено с помощью описанного алгоритма. В ответе запишите это число в десятичной системе счисления.

 

Решим программированием

1. Перебираем все числа. Так как диапазон N не указан, напишем от 1 до 100:

2. Строим алгоритм из задачи:

Пояснение по некоторым частям алгоритма:

N % 3 найдет остаток от деления N на 3. Если он равен 0, то число N делится на 3

R[ -3 : ] – срез, который начинается на третьем элементе с конца и заканчивается последним элементом строки.

3. Находим число, которое подходит по условию

Добавляем в самое начало массив ans. int(R, 2) переведет число из двоичной в десятичную систему. Если наше R больше 151, мы добавляем его в массив ans. После выхода из цикла, мы пишем наименьшее число из массива ans.

Ответ: 163

 

3. Досрочная волна 2024

Here’s the text from the image:

________________________________________

Задание 5 (№15317). (М. Ишимов)

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.

1. Строится двоичная запись числа N.

2. Далее эта запись обрабатывается по следующему правилу:

а) если число N чётно, то справа приписывается «01»;

б) если число N нечётно, то к этой записи слева и справа приписывается единица.

Полученная таким образом запись является двоичной записью искомого числа R.

3. Результат переводится в десятичную систему и выводится на экран.

Например, для исходного числа 12 = 1100₂ результатом является число 110001₂ = 49, а для исходного числа 5 = 101₂ результатом является число 110111₂ = 27.

Укажите минимальное число N, после обработки которого с помощью этого алгоритма получается число R, большее 156. В ответе запишите это число в десятичной системе счисления.

 

1. Перебираем все числа. Так как диапазон N не указан, напишем от 1 до 100:

2. Строим алгоритм из задачи

N % 2 == 0 – стандартная проверка на четность.

3. Находим число, которое подходит по условию.

Если полученное число R > 156, то мы печатаем исходное число N и пишем break – останова цикла for.

Получаем ответ 33.

 

4. Основная волна (центр) 2024

Задание 5 (№17624).

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.

1. Строится двоичная запись числа N.

2. К этой записи дописываются справа ещё два разряда по следующему правилу:

а) складываются все цифры двоичной записи числа N, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;

б) над этой записью производятся те же действия — справа дописывается остаток от деления суммы её цифр на 2.

Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R.

3. Результат переводится в десятичную систему и выводится на экран.

Укажите минимальное число R, которое превышает число 75 и может являться результатом работы данного алгоритма. В ответе запишите это число в десятичной системе счисления.

 

5. Пробник 01.2023 

Задание 5 (№1804).

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.

1. Строится двоичная запись числа 2N.

2. К этой записи дописываются справа ещё два разряда по следующему правилу:

a) складываются все цифры двоичной записи числа N, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 10000 преобразуется в запись 1000001;

b) над этой записью производятся те же действия — справа дописывается остаток от деления суммы её цифр на 2.

Полученная таким образом запись (в ней на три разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Укажите такое наименьшее число N, для которого результат работы данного алгоритма больше числа 249. В ответе это число запишите в десятичной системе счисления.

 

6. OpenFIPI #1 2023

Задание 5 (№6884).

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.

1. Строится двоичная запись числа N.

2. К этой записи дописываются справа и слева ещё по одному или два разряда по следующему правилу:

  • если N чётное, то в конец числа (справа) дописывается нуль, а в начало числа (слева) дописывается единица;
  • если N нечётное, то в конец числа (справа) и в начало числа (слева) дописываются по две единицы.

Например, для числа 13 двоичная запись 1101 преобразуется в запись 11101111.

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

Укажите наименьшее число R, превышающее 225, которое может являться результатом работы данного алгоритма. В ответе это число запишите в десятичной системе счисления.

 

7. Досрочная волна I 2023

Задание 5 (№7584).

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.

1. Строится двоичная запись числа N.

2. Далее эта запись обрабатывается по следующему правилу:

a) если число кратно 3, тогда в конец дописывается три младших разряда полученной двоичной записи,

b) если число не кратно 3, тогда в конец дописывается двоичная последовательность, являющаяся результатом умножения 3 на остаток от деления числа N на 3.

Полученная таким образом запись является двоичной записью искомого числа R.

Укажите наибольшее число N, после обработки которого с помощью этого алгоритма получается число R, меньшее 100. В ответе запишите это число в десятичной системе счисления.

 

8. Основная волна 2022 I

Задание 5 (№4585).

На вход алгоритма подаётся натуральное число N.

Алгоритм строит по нему новое число R следующим образом.

1. Строится двоичная запись числа N.

2. Далее эта запись обрабатывается по следующему правилу:

a) если сумма цифр в двоичной записи числа чётная, то к этой записи справа дописывается 0, а затем два левых разряда заменяются на 10;

b) если сумма цифр в двоичной записи числа нечётная, то к этой записи справа дописывается 1, а затем два левых разряда заменяются на 11.

Полученная таким образом запись является двоичной записью искомого числа R.

Укажите минимальное число N, после обработки которого с помощью этого алгоритма получается число R, не меньшее, чем 16.

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

6 задание

В ЕГЭ-2023 по информатике появилась новая задача под номером 6, про Черепашку. Эта задача проверяет наше умение анализировать алгоритмы управления исполнителями и вычислительные алгоритмы на простейшем уровне.

Важно помнить, что задача №6 действительно простая. Наша цель — получить верный ответ, не усложняя процесс. Нет необходимости писать универсальную программу, способную считать количество точек для любой возможной траектории. Мы решаем задачу для конкретной предложенной ситуации, следуя логике и простым вычислениям.

Для успешного решения этой задачи нам не нужно знать каких-то сложных теоретических терминов, потому что задание направлено на практику. Единственное определение, которое нам важно понимать – это алгоритм.

Алгоритм — это точная и конечная последовательность шагов или инструкций, которые необходимо выполнить, чтобы достичь определённой цели или решить задачу. Каждый шаг алгоритма однозначно определён, что позволяет достичь нужного результата, если выполнять инструкции последовательно.

В контексте задачи с Черепашкой алгоритм — это список команд, таких как «Вперёд», «Направо», «Поднять хвост», которые указывают, что именно должна делать Черепашка. Выполняя алгоритм, Черепашка последовательно исполняет каждую команду, следуя заданным инструкциям, и, таким образом, рисует фигуру или достигает конкретного положения на плоскости.

Также давайте разберёмся, что такое пересечение и объединение:

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

Пример: если черепашка рисует два пересекающихся квадрата, то область пересечения — это часть плоскости, которая покрыта обоими квадратами.

Объединение фигур — это совокупность всех областей, покрытых одной или несколькими фигурами. В объединение включаются все точки, которые попадают под какую-либо фигуру, независимо от того, перекрываются ли они другими фигурами или нет. Это значит, что при подсчёте точек в объединении не нужно дважды учитывать одну и ту же область, даже если она попадает под несколько траекторий черепашки.

Пример: если черепашка рисует два пересекающихся квадрата, то объединение — это площадь обоих квадратов, включая их перекрывающиеся части (их учитывают только один раз).

Перейдём к примеру решения прототипов задач:

Разберём задачу №6 ЕГЭ 2025 из демоверсии ФИПИ:

Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует 6 команд: Поднять хвост, означающая переход к перемещению без рисования; Опустить хвост, означающая переход в режим рисования; Вперёд n (где n — целое число), вызывающая передвижение Черепахи на n единиц в том направлении, куда указывает её голова; Назад n (где n — целое число), вызывающая передвижение в противоположном голове направлении; Направо m (где m — целое число), вызывающая изменение направления движения на m градусов по часовой стрелке; Налево m (где m — целое число), вызывающая изменение направления движения на m градусов против часовой стрелки.

Запись Повтори k [Команда1 Команда2 … КомандаS] означает, что последовательность из S команд повторится k раз.

Черепахе был дан для исполнения следующий алгоритм:

Повтори 9 [Вперёд 22 Направо 90 Вперёд 6 Направо 90]
Поднять хвост
Вперёд 1 Направо 90 Вперёд 5 Налево 90
Опустить хвост
Повтори 9 [Вперёд 53 Направо 90 Вперёд 75 Направо 90]

Определите периметр области пересечения фигур, ограниченных заданными алгоритмом линиями.

Решим задачу, используя среду Кумир и аналитику:

1. Открываем нашу программу Кумир, импортируем исполнителя «Черепаха» (использовать Черепаха), переписываем наш алгоритм, соблюдая синтаксис нашего языка:

2. Мы получили результат нашего алгоритма, но очень важный момент: когда мы приближаем наш чертёж, количество клеточек меняется. Почему? Всё дело в том, что сейчас мы используем автоматическое масштабирование. Чтобы его убрать, нажимаем на 3 полоски, убираем галочку «авто» и в строке «сетка» устанавливаем 1:

3. Вспоминаем условия нашей задачи: нам нужно посчитать периметр области, которая получилась в результате пересечения фигур:

4. Чтобы нам точно не ошибиться в подсчёте количества клеток (для того, чтобы посчитать периметр), мы можем сделать скриншот и аккуратно посчитать в paint, используя кисть: получаем 21 клетку внутри, то есть периметр равен 21 * 2 + 2 = 44

Ответ: 44

 

Дальше посмотрим задание из варианта с основной волны 08.06.2024:

Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует 6 команд: Поднять хвост, означающая переход к перемещению без рисования; Опустить хвост, означающая переход в режим рисования; Вперёд n (где n — целое число), вызывающая передвижение Черепахи на n единиц в том направлении, куда указывает её голова; Назад n (где n — целое число), вызывающая передвижение в противоположном голове направлении; Направо m (где m — целое число), вызывающая изменение направления движения на m градусов по часовой стрелке; Налево m (где m — целое число), вызывающая изменение направления движения на m градусов против часовой стрелки.

Запись Повтори k [Команда1 Команда2 … КомандаS] означает, что последовательность из S команд повторится k раз.

Черепахе был дан для исполнения следующий алгоритм:

Повтори 3 [Вперёд 7 Направо 90 Вперёд 12 Направо 90]
Поднять хвост
Вперёд 4 Направо 90 Вперёд 6 Налево 90
Опустить хвост
Повтори 4 [Вперёд 83 Направо 90 Вперёд 77 Направо 90]

Определите, сколько точек с целочисленными координатами будут находиться внутри объединения фигур, ограниченных заданными алгоритмом линиями, включая точки на границах этого объединения.

Представим, что вы пришли на экзамен и почему-то не увидели на своём компьютере Кумир, что же делать? Давайте разберём решение с помощью программирования на python:

1.  Импортируем модуль «turtle» (аналог исполнителя Черепашки на кумире), переписываем наш алгоритм, используя синтаксис языка и нашей библиотеки (fd – forward (вперёд), bk – back (назад), rt – right (вправо), lt – left (влево), up – поднять хвост, down — опустить). Важно: изначально по условию Черепаха должна смотреть вверх, а по умолчанию в нашей программе она смотрит вправо, поэтому ей нужно развернуть на 90° влево. Сразу же для увеличения масштаба нашего чертежа введём переменную m, на которую умножаем шаги назад и вперёд (то есть те, шаги, в которых черепаха движется, а не вращается):

2.  Теперь нам нужно проставить точки, которые мы и будем считать: поднимаем хвост, чтобы во время отрисовки точек Черепаха не рисовала линию за собой и пишем вложенный цикл, диапазон по x и по y можем поперебирать, чтобы он полностью покрывал наш чертёж. Чтобы долго не ждать, пока Черепаха нарисует фигуру и точки, отключаем анимацию (tracer(0)):

3.  Если вдруг наш чертёж не помещается на экране, можно в начале нашей программы прописать screensize (2000, 2000) – такого размера экрана вам точно хватит в большинстве задач. Ещё момент: в аргументе у dot() можно указать её размер, а вторым аргументом и цвет, но нам подойдёт и стандартный.

4.    Как мы видим, фигура у нас получилась большая, поэтому чтобы посчитать количество точек в объединении, нужно посмотреть в наш алгоритм: в первом цикле мы рисуем маленький прямоугольник, считаем, сколько входит точек в него: 13 * 8 = 104 (точек на одну больше, чем шагов сделала Черепаха). Во втором цикле мы рисуем большой прямоугольник, его площадь равно 84 * 78 = 6552,

5.    Но, если мы просто сложим эти числа, мы найдем неверный ответ. Почему? Всё дело в том, что мы дважды посчитаем пересечение наших прямоугольников, поэтому его нужно вычесть из нашей итоговой суммы (количество точек в пересечении 4 * 7 = 28)

6.    Считаем ответ: 6552 + 104 – 28 = 6628

Ответ: 6628

 

Дальше посмотрим досрочную волну 2024 года:

Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует 6 команд: Поднять хвост, означающая переход к перемещению без рисования; Опустить хвост, означающая переход в режим рисования; Вперёд n (где n — целое число), вызывающая передвижение Черепахи на n единиц в том направлении, куда указывает её голова; Назад n (где n — целое число), вызывающая передвижение в противоположном голове направлении; Направо m (где m — целое число), вызывающая изменение направления движения на m градусов по часовой стрелке; Налево m (где m — целое число), вызывающая изменение направления движения на m градусов против часовой стрелки.

Запись Повтори k [Команда1 Команда2 … КомандаS] означает, что последовательность из S команд повторится k раз.

Черепахе был дан для исполнения следующий алгоритм:

Повтори 2 [Вперёд 13 Направо 90 Вперёд 18 Направо 90]
Поднять хвост
Вперёд 5 Направо 90 Вперёд 9 Налево 90
Опустить хвост
Повтори 2 [Вперёд 11 Направо 90 Вперёд 7 Направо 90]

Определите, сколько точек с целочисленными координатами будут находиться внутри пересечения фигур, ограниченных заданными алгоритмом линиями, включая точки на линиях.

Решим с помощью Кумира:

1. Переписываем наш алгоритм, не забываем про масштаб:

2.    Делаем скриншот, идём в paint, аккуратно считаем наши точки (внимательно смотрим, что от нас хотят в условии: объединение или пересечение; нужно ли считать точки на линии): 9 * 8 = 72

Ответ: 72

 

Проанализируем следующий прототип задачи:

Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует две команды: Вперёд n (где n  — целое число), вызывающая передвижение Черепахи на n единиц в том направлении, куда указывает её голова, и Направо m (где m  — целое число), вызывающая изменение направления движения на m градусов по часовой стрелке. Запись Повтори k [Команда1 Команда2 … КомандаS] означает, что последовательность из S команд повторится k раз. Черепахе был дан для исполнения следующий алгоритм: Повтори 11 [Вперёд 36 Направо 72] Определите расстояние между положениями Черепахи в начале и в конце выполнения этой программы. В ответе запишите целое число, ближайшее к найденному расстоянию.

Способ 1: аналитический

1.  Черепашка получает команду двигаться вперёд на 36 шагов, затем поворачивать направо на 72 градуса. Эта последовательность повторяется 11 раз. Мы понимаем, что каждый раз после движения вперёд на 36 шагов и поворота направо на 72 градуса черепашка отклоняется на определённый угол. Внутренний угол между её траекториями равен 180° − 72° = 108°

2.  Мы понимаем, что черепаха рисует какой-то n-угольник. У вас может не быть транспортира, чтобы точно построить n-угольник, но мы помним формулу угла в правильном n-угольнике и можем сказать, сколько в нем углов. Если мы не помним формулу, то для данного конкретного примера сейчас получим ответ. Проведем прямые от углов n-угольника в центр. В полученном равнобедренном треугольнике углы при основании будут по 108° : 2 = 54°, а угол в вершине треугольника 180° — 108° = 72°.

3.  Таких уголочков по 72° должно быть n штук. Тогда получится замкнутая фигура, правильный n-угольник.Делаем вывод, что это будет 5-ти угольник. Поскольку n * 72° = 360°, значит n = 5.

4. Получается, что после пяти итераций черепашка вернулась в исходную точку А. Еще 5 итераций — и опять черепашка в исходной точке А. Всего у нас 11 итераций, значит, она закончила движение в точке В. Между точками А и В 36 шагов – это и есть ответ задачи.

Ответ: 36

Способ 2: программирование

1.  Не забываем, что задача №6 относится к области алгоритмики, а не программирования. Конечно, можно решить её и с помощью кода. Давайте попробуем запрограммировать «черепашку» и автоматизировать её движения. Для этого в Python существует удобный модуль turtle (или «Черепашья графика»), который позволяет черепашке передвигаться по экрану и оставлять след, рисуя нужные фигуры. Вот как может выглядеть такая программа:

2.  Подключаем библиотеку, которая позволяет черепашке двигаться и рисовать на экране. В задаче сказано «36 вперёд», что означает 36 шагов. Размер одного шага мы можем выбрать сами. Если взять единичный шаг по умолчанию, рисунок получится слишком маленьким и трудноразличимым. Поэтому установим шаг равным 5, чтобы чётко видеть, что черепашка рисует на экране.

3.  Теперь читаем задание. По условию, исполнитель (черепашка) изначально смотрит вдоль оси x, то есть вправо. Однако, в нашем представлении движение «вперёд» обычно означает движение вверх на экране. Поэтому первым шагом повернём черепашку на 90°, чтобы она смотрела вверх, а не вправо. Также установим скорость от 1 до 10, где «1» — самая медленная скорость. Эти параметры не обязательны, но они помогут нам лучше наблюдать за движением черепашки. Теперь напишем алгоритм в соответствии с условиями задачи и запустим программу, чтобы посмотреть, что черепашка будет рисовать на экране.

4.  Черепаха рисует пятиугольник, который мы вычислили аналитически. Между начальной и конечной точкой ее движения36 шагов.Получается, что мы поручили черепахе «поползать» и «отрисовать» след.

Ответ: 36

 

Разберём ещё один прототип:

Черепахе был дан для исполнения следующий алгоритм: Повтори 7 [Вперёд 10 Направо 120]. Определите, сколько точек с целочисленными координатами будут находиться внутри области, ограниченной линией, заданной данным алгоритмом. Точки на линии учитывать не следует.

Решим аналитическим способом (с написанием небольшой программы для перебора):

1.  Эта задача немного сложнее. Нам нужно определить количество точек с целочисленными координатами, которые окажутся строго внутри нарисованной фигуры, не включая её границу. Черепашка прошла вперёд 10 шагов и повернула на 120 градусов. Поворот на 120° означает, что внутренний угол составит 60°. Черепашка снова прошла 10 шагов, затем опять повернула на 120°, создавая тот же внутренний угол в 60°. Этот цикл повторяется 7 раз. Какую фигуру нарисовала черепашка? Это равносторонний треугольник со стороной 10.

2.  Как посчитать целые точки? Вручную это сделать сложно, поэтому мы решим задачу при помощи компьютерной программы. Давайте пока обозначим формально, что это за область. Если нарисовать систему координат, ось x и ось y, тогда можно записать для этого множества точек систему неравенств.

3.  Опишем уравнениями три прямые, которые создают заштрихованную плоскость.

1) Это множество точек, которое лежит правее 0, т.е. x > 0

2) Эти точки лежат под графиком убывающей линейной функции, то есть под прямой

3) Точки лежат выше возрастающей линейной функции, то есть выше прямой

4. Такая система неравенств однозначно задает эту область:

5.  Дальше можно перебирать все значения x и y в каком-нибудь диапазоне, но в каком? Если сторона треугольника 10, то x точно хватит до 10, а y тоже хватит до 10. И в этом квадрате 10 на 10 мы будем анализировать точки – удовлетворяют ли они системе неравенств.

6.  Вот счетчик точек. Запускаем цикл для x от 0 до 10 и для y от 0 до 10.Перебираем все точки с целочисленными координатами, поскольку шаг по умолчанию – единица. Если выполняются три условия, то счетчик увеличивается на единицу. В качестве  можно написать . Запускаем подсчет.

Ответ: 38

Можно ли сделать по-другому? Сейчас мы покажем вам ещё один способ:

1.  Попросим черепашку поползать и оставить след. Пока просто для того, чтобы понять, что это за фигура.

2.  Опять будем анализировать вручную. Если мы не сообразили, что это за треугольник, то можно попросить черепашку его построить. Так как шаги маленькие, делаем шаг 15, чтобы наш треугольник был побольше. Поворачиваем черепаху на 90°, даем ей маленькую скорость, чтобы успевать отслеживать. И повторяем алгоритм 7 раз.

3.  После этого можно включать аналитическую составляющую.Что делать, если мы не умеем составлять уравнения прямой? Тогда есть еще один способ. Мы можем попросить черепашку не только нарисовать траекторию, а еще и поставить точки в целочисленных координатах. Вот смотрите:

4.  Мы поднимаем перо (t.up ()), поднимаем черепашку. Немножко увеличиваем скорость. Перебираем все x и y в каком-то разумном интервале и точечное вставание на точку с заданными координатами (t.goto). То есть черепашка прыгает в эти узлы координатной сетки и рисует точку диаметром 5 (t.dot). Смотрите, что получается:

5.  Сначала черепаха рисует треугольник, как раньше, а потом ходит и ставит точки. Фигура небольшая, и мы можем посчитать эти точки внутри.Что делать, если мы не уверены, входит точка в область или нет? Можно увеличить треугольник, нарисовать его крупнее, сделав не 15, а 30. Теперь хорошо видно и можно посчитать количество точек.

Ответ: 38

На этот раз мы все сделали вручную. И даже посчитали точки.Есть ли способ продолжить развитие этой программы и попросить черепаху еще и посчитать точки? Есть. Но мы намеренно не будем даже пытаться вам это дать.Это задача №

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

 

Разберём ещё одно задание:

Черепахе был дан для исполнения следующий алгоритм: Повтори 4 [ Вперёд 7 Направо 90 Вперёд 7 Налево 90 Вперёд 7 Направо 90 ] Определите, сколько точек с целочисленными координатами будут находиться внутри области, ограниченной линией, заданной данным алгоритмом. Точки на линии учитывать не следует.

Решим аналитически:

1. В условии сказано: «Повторить 4 раза: вперед 7,направо 90. Вперед 7, налево 90. Еще раз вперед 7 и направо 90».1 виток: вперед 7 направо 90 вперед 7 налево 90 вперед 7 направо 90.

2 виток: вперед 7 направо 90 вперед 7 налево 90 вперед 7 направо 90.

3 виток: вперед 7 направо 90 вперед 7 налево 90 вперед 7 направо 90.

4 виток: вперед 7 направо 90 вперед 7 налево 90 вперед 7 направо 90.

2. Вот такой крестик нарисовала черепаха. Нарисуем ось x и ось y.

3. Для начала можно искомые точки посчитать вручную. Только надо, чтобы точки не попали на границу.

4. Точек в высоту будет 6, а в ширину 7 + 7 + 6 = 20. Это область закрашена зеленым.

И еще две верхушки (оранжевый цвет). Два раза 7 в высоту и 6 в ширину.В итоге количество точек будет 6 * (7 + 7 + 6) + 2 * 7 * 6 = 204

Ответ: 204

 

Решим задачу по-другому, задав условия формулами:


1. Сначала зададим программу, которая нарисует этот крестик.

2. Теперь анализируем: 0 < y < 7 или 7 < x < 14.

3.  Программа нарисовала фигуру и посчитала точки (204).Такой способ лучше, потому что мы создаем условия для прямых и не занимаемся подсчетом вручную. Но можем и посчитать вручную.

Черепаха не только рисует фигуру, но и ставит точки.

Ответ: 204

Посмотрим, как решается ещё один подобный пример:

Черепахе был дан для исполнения следующий алгоритм: Повтори 9 [ Вперёд 30 Направо 90 Вперёд 40 Направо 90 ] Определите расстояние между положениями Черепахи в начале и в конце выполнения этой программы.

Решим аналитически, написав небольшую программу:

1. Нарисуем движение черепахи:

2. Черепаха ходит по сторонам прямоугольника. Где же она остановится? Один виток цикла – это черепаха марширует по 2м сторонам, 9 раз.Если черепаха начала движение в точке А, то завершит она движение в точке В.

3. Теперь нужно найти расстояние, теорема Пифагора нам в помощь.

4. Искомое расстояние равно 50. Смысла программировать нет. Для тех, кто не увидел сразу прямоугольник и хочет понять, что черепаха нарисовала, давайте запрограммируем. Запускаем алгоритм на отрисовку.

5.    Сетку не рисуем, мы и так знаем, что стороны 30 на 40. Не усложняем.

Ответ: 50

Приступим к разбору следующего прототипа задачи:

Черепахе был дан для исполнения следующий алгоритм: Повтори 9 [ Вперёд 30 Направо 90 Вперёд 40 Направо 90 ] Определите, сколько точек с целочисленными координатами будут находиться внутри области, ограниченной линией, заданной данным алгоритмом. Точки на линии учитывать не следует.

Решение:

1.  Задача такая же, но теперь нам нужно посчитать точки, которые внутри.Рисунок тот же самый. Нам нужно понять, сколько точек с целочисленными координатами оказалось внутри рисунка.Строго внутри будет 29 точек вверх и по горизонтали 39. Умножаем и считаем: 29 * 39 = 1131

Если хотим попросить об этом черепаху, то давайте это сделаем:

Получили 1131.

2. Можно попросить черепашку порисовать точечки:

Ответ: 1131

Рассмотрим ещё одну задачу в рамках этой темы:

Черепахе был дан для исполнения следующий алгоритм: Повтори 5 [ Вперёд 7 Направо 45 Вперёд 7 Направо 135 ] Определите, сколько точек с целочисленными координатами будут находиться внутри области, ограниченной линией, заданной данным алгоритмом. Точки на линии учитывать не следует.

Решение:

1.  Сделаем рисунок движения черепахи:

2. Добавляем ось x и ось y:

3. Вручную посчитать сложно. Давайте попросим черепаху помочь:

4. Фигура маленькая, можно увидеть, что точек 4 * 6 = 24А можно сделать и по-другому. Опишем системой уравнений:

, значит,  .

5. Уравнение первой прямой y = x

Уравнение другой прямой y = x + 7

6. Запрограммируем:

Получим результат 24.

Ответ: 24

Это программный метод, и он имеет свои преимущества: вместо того чтобы рисовать вручную, мы просто задаём уравнение и выполняем расчёт. Важно уметь работать разными способами. Если форма фигуры сразу очевидна, то нет необходимости её рисовать. Если возникают сомнения — лучше сделать рисунок.
Когда у вас есть чертёж и понятно, как задать систему неравенств, сразу переходите к этому этапу. Если что-то остаётся неясным, используйте программную отрисовку точек. Нам важны все методы — главное, чтобы результат был правильным.

 

Перейдём к следующему примеру для закрепления материала:

Черепахе был дан для исполнения следующий алгоритм: Повтори 8 [ Вперёд 9 Направо 60 Вперёд 9 Направо 120 ] Определите, сколько точек с целочисленными координатами будут находиться внутри области, ограниченной линией, заданной данным алгоритмом. Точки на линии учитывать не следует.

Решение:

2. Напишем систему неравенств:

3. Запрограммируем и нарисуем точки:

4. А можно задать уравнения:

Ответ: 63

Нужно понимать, что задача №6 ЕГЭ по информатике с исполнителем «Черепашка» проверяет базовые навыки работы с алгоритмами и не требует глубоких теоретических знаний или сложного программирования. Основная цель — дать верный ответ, следуя простым шагам и логике, не усложняя процесс.

Важно внимательно читать условие задачи и чётко понимать, что от нас хотят составители: объединение или пересечение; нужно ли считать точки на границах или нет.

Если есть сомнения в траектории, лучше нарисовать её на бумаге или использовать программную визуализацию. Попробуйте решить задачу двумя способами: аналитически (разобрав последовательность шагов и поворотов) и с помощью программирования (например, используя turtle в Python или Черепаху в Кумире для наглядности). Это поможет убедиться в правильности ответа.

Выучите синтаксис Кумира и модуля turtle в python. Небольшой лайфхак: в Кумире есть подсказки по синтаксису. В панели навигации выбираем исполнителя Черепаха и видим весь список наших команд.

Также помните, что задача требует умения чётко анализировать алгоритм и понимать, какие точки или фигуры образуются в результате движений «Черепашки». Это поможет избежать ошибок и даст уверенность в правильности решения.

7 задание

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

Для расчёта объёма информации, необходимого для хранения изображения, используется формула для объёма информации графического файла:
I = K x i
где:
I — объём информации изображения (в битах);
K — общее количество пикселей в изображении (зависит от ширины и высоты изображения);
i — глубина цвета (количество бит, выделяемых на один пиксель).

Эти параметры помогают определить, сколько памяти потребуется для хранения изображения с заданными характеристиками.

Для определения количества цветов, которое может быть закодировано с заданной глубиной цвета, используется формула для расчёта количества цветов:
N=2^i
где:
N — количество возможных цветов;
i — глубина цвета в битах.

Эта формула полезна для расчёта возможного количества цветов, которые может содержать изображение.

Кодирование звуковых файлов требует учёта таких параметров, как частота дискретизации, глубина кодирования, количество каналов записи и длительность записи. Для вычисления объёма звукового файла используется формула:
I = v × i × k × t
где:
I — объём информации звукового файла (в битах);
v — частота дискретизации (количество отсчётов в секунду, измеряется в Герцах);
i — глубина кодирования (количество бит на каждый отсчёт);
k — количество каналов записи (например, один для моно, два для стерео);
t — длительность записи (в секундах).

Чем выше частота дискретизации, глубина кодирования и количество каналов, тем качественнее, но объёмнее будет звуковой файл.

При расчёте времени передачи данных по сети используется формула для передачи данных по сети Интернет:
V = k × t
где:
V — объём информации, передаваемой через сеть;
q — скорость передачи данных (в битах в секунду);
t — время передачи (в секундах).

Эта формула позволяет определить, сколько времени потребуется для передачи файла через сеть при заданной скорости передачи.

Архивация служит для уменьшения объёма файла с целью его последующей передачи или хранения. В задачах часто спрашивают: «Какой способ передачи будет быстрее — с архивацией или без неё?»

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

Для удобства приведена таблица с основными единицами измерения объёма данных:

Единица измерения Обозначение Эквивалент в меньших единицах
Бит бит —
Байт Б 8 бит
Килобайт КБ 1024 Б
Мегабайт МБ 1024 КБ
Гигабайт ГБ 1024 МБ
Терабайт ТБ 1024 ГБ

 

Также для быстрого и эффективного решения этой задачи важно хорошо знать степени двойки. Вот таблица степеней двойки до 15-й степени:

Степень Значение
20 1
21 2
22 4
23 8
24 16
25 32
26 64
27 128
28 256
29 512
210 1024
211 2048
212 4096
213 8192
214 16384
215 32768

 

Перейдём к примеру решения прототипов задач:

Разберём задачу №7 ЕГЭ 2025 из демоверсии ФИПИ:

Прибор автоматической фиксации нарушений правил дорожного движения делает цветные фотографии размером 1024×768 пикселей, используя палитру из 4096 цветов. Снимки сохраняются в памяти камеры, группируются в пакеты по несколько штук, а затем передаются в центр обработки информации со скоростью передачи данных 1 310 720 бит/с.
Каково максимальное возможное количество снимков в одном пакете, если на передачу одного пакета отводится не более 300 секунд?
В ответе запишите целое число.

Для всех прототипов этого задания способ решения будет один – аналитический:

  1. Выпишем условия нашей задачи:
    • N = 4096 = 2^i, значит i = 12 (глубина цвета в битах, то есть вес одного пикселя в битах);
    • K = 1024 * 768 = 786432 (общее количество пикселей в изображении);
    • v = 1310720 бит/c (скорость передачи данных);
    • t <= 300 c (время передачи одного пакета).
  2. Теперь мы можем найти вес одной фотографии: K * i = 786432 * 12 = 9437184; сколько таких фотографий в пакете нам не известно, тогда мы можем обозначить это количество за X. Вес одного пакета в таком случае будет 9437184 * X бит.
  3. Время передачи одного пакета равна частному веса этого пакета и скорости передачи данных, то есть получается неравенство: t <= (9437184 * X) / v; 300 >= (9437184 * X) / 1310720, тогда 300 >= 7,2X. Чтобы получить ответ, нам просто остаётся решить это неравенство: X <= 41,66666. Так как количество снимков в одном пакете не может быть дробным, то наш ответ 41.

Ответ: 41

Дальше разберём задание из досрочной волны 2024-го года:

Прибор автоматической фиксации нарушений правил дорожного движения делает цветные фотографии размером 2764 на 1793 пикселей, используя палитру из 7026 цветов. Снимки сохраняются в памяти камеры, группируются в пакеты по 148 штук, затем передаются в центр обработки информации со скоростью передачи данных 18 349 566 бит/с. Сколько секунд требуется для передачи одного полного пакета фотографий? В ответе запишите только целую часть полученного числа.

Решение:

  1. Выпишем условия нашей задачи:
    • Размер фотографии: 2764 * 1793 пикселей
    • Палитра содержит 7026 цветов, что соответствует глубине цвета i. Важный момент: поскольку N = 7026 = 2^i, то i = 13, то есть мы округляем число до большей степени двойки, потому что если мы возьмем i = 12, N будет равно 4096 (получится меньше цветов, чем нам нужно по условию).
    • Общее количество пикселей в изображении: K = 2764 * 1793 = 4952452 пикселя.
    • Количество фотографий в пакете: 148.
    • Скорость передачи данных: v = 18349566 бит/с.
  2. Находим объём данных для одной фотографии: I(фото) = K * i = 4952452 * 13 = 64381876 бит.
  3. Находим объём данных для одного пакета: I(пакет) = I(фото) * 148 = 64381876 * 148 = 9528533848 бит.
  4. Вычисляем время передачи одного пакета: t = I(пакет) / v = 9528533848 / 18349566 = 519,278431… Но по условию нас просят записать только целую часть, то есть мы просто откидываем дробную и пишем ответ.

Ответ: 519

Посмотрим основную волну 07.06.2024:

Прибор автоматической фиксации нарушений правил дорожного движения делает цветные фотографии размером 1024×960 пикселей, используя палитру из 8192 цветов. Снимки сохраняются в памяти камеры, группируются в пакеты по несколько штук, затем передаются в центр обработки информации со скоростью передачи данных 1 474 560 бит/с. Каково максимальное возможное число снимков в одном пакете, если на передачу одного пакета отводится не более 280 секунд?
В ответе запишите целое число.

Решение:

  1. Выпишем условия задачи:
    • Размер фотографии: 1024 * 960 пикселей.
    • Палитра содержит 8192 цветов, что соответствует глубине цвета i. Так как N = 8192= 2^13, принимаем i = 13 бит на пиксель.
    • Общее количество пикселей в изображении: K = 1024 * 960=983040 пикселей.
    • Скорость передачи данных: v = 1474560 бит/с.
    • Максимальное время передачи пакета: t ≤ 280 секунд.
  2. Находим объём данных для одной фотографии: I (фото) = K * i = 983040 * 13 = 12779520 бит
  3. Определяем объём данных для пакета из X фотографий и время передачи: I (пакет) = I (фото) * X = 12779520 * X. Время передачи одного пакета:
  4. Подставляем условие ограничения времени t ≤ 280:Упростим это выражение:Округляем до целого числа, так как количество снимков в пакете должно быть целым.
    Получаем X = 32

Ответ: 32

Теперь давайте разберём задание №7 из варианта досрочной волны 2023:

Пользователь записал голосовое сообщение. Сообщение представляет собой стерео аудиофайл со следующими параметрами: глубина кодирования — 24 бит, частота дискретизации 16000 отсчётов в секунду, время записи — 90 с. Данное сообщение было отправлено по Сети со скоростью 64 000 бит/с. Сколько секунд будет передаваться голосовое сообщение?

Решение:

  1. Выпишем условия задачи:
    • Глубина кодирования i = 24 бит.
    • Частота дискретизации v = 16000 отсчётов в секунду.
    • Время записи t = 90 секунд.
    • Количество каналов записи k = 2 (стерео).
    • Скорость передачи данных q = 64000 бит/с.
  2. Находим объём данных для голосового сообщения: используем формулу для объёма информации звукового файла:Подставляем значения:
    бит
  3. Вычисляем время передачи голосового сообщения:
    используем формулу для времени передачи:Подставляем значения:
    секунд

Ответ: 1080

Решим задачу из основной волны(II) 2023-го года:

Производилась четырёхканальная (квадро) звукозапись с частотой дискретизации 192 кГц и 16-битным разрешением. В результате был получен файл размером 967 Мбайт, без учёта размера заголовка и без сжатия данных. Определите длительность звукозаписи (в минутах). В качестве ответа укажите ближайшее к полученному времени записи целое число.

Решение:

  1. Выпишем условия задачи:
    • Частота дискретизации v = 192 кГц = 192000 Гц
    • Разрешение (глубина кодирования) i = 16 бит
    • Количество каналов записи k = 4 (квадро)
    • Размер файла I = 967 Мбайт = 967 * 1024 *1024 * 8=8100245504967 = 8100245504 бит
  2. Находим длительность записи t: используем формулу для объёма информации звукового файла:Подставляем значения:секунд
  3. Переводим время в минуты, округляя до ближайшего целого (просят по условию):
    минут

Ответ: 11

Дальше разберём прототип из варианта основной волны(III) этого же года:

Производилась двухканальная (стерео) звукозапись с частотой дискретизации 48 кГц и 24-битным разрешением. В результате получен файл размером 288 Мбайт без учёта размера заголовка и без сжатия данных. Определите длительность звукозаписи (в минутах). В качестве ответа укажите ближайшее к полученному времени записи целое число.

Решение:

  1. Выпишем условия задачи:
    • Частота дискретизации v = 48 кГц = 48000 Гц
    • Разрешение (глубина кодирования) i = 24 бит
    • Количество каналов записи k = 2 (стерео)
    • Размер файла I = 288 Мбайт = 288 * 1024 * 1024 * 8 = 2415919104288 бит.
  2. Находим длительность записи t: используем формулу для объёма информации звукового файла:Подставляем значения:секунд
  3. Переводим время в минуты:
    минут
    Округляем до ближайшего целого числа: 17 минут.

Ответ: 17

Теперь посмотрим задания на архивацию данных (вариант с основной волны 2022-го года):

Для хранения сжатого произвольного растрового изображения размером 640 на 256 пикселей отведено 170 Кбайт памяти без учёта размера заголовка файла. Файл оригинального изображения больше сжатого на 35%. Для кодирования цвета каждого пикселя используется одинаковое количество бит, коды пикселей записываются в файл один за другим без промежутков. Какое максимальное количество цветов можно использовать в изображении?

Решение:

  1. Выпишем условия задачи:
    • Размер изображения: 640 * 256 = 163840 пикселей
    • Объём памяти для сжатого изображения: 170 Кбайт = 170 * 1024 * 8 = 1392640 бит
    • Файл оригинального изображения больше сжатого на 35%, то есть сжатое изображение составляет 65% от исходного
    • Для кодирования цвета каждого пикселя используется одинаковое количество бит
  2. Находим объём исходного (несжатого) изображения:
    Если сжатое изображение составляет 65% от исходного, то объём исходного изображения I(исх)​ можно найти по формуле:
  3. Количество бит на пиксель i можно найти, разделив объём исходного изображения на количество пикселей: (1392640 / 0,65) / 163840 = 13 битов на пиксель (округляем вниз)
  4. Максимальное количество цветов N можно определить по формуле:Подставляем значение i = 13:

Ответ: 8192

Ну и напоследок решим аналогичную задачу с досрочной волны этого же года:

Для хранения произвольного сжатого растрового изображения размером 486×720 пикселей отведено 80 Кбайт памяти без учёта размера заголовка файла. Для кодирования цвета каждого пикселя используется одинаковое количество бит, коды пикселей записываются в файл один за другим без промежутков. После сохранения информации о пикселях изображение сжимается. Размер итогового файла после сжатия на 15% меньше исходного. Какое максимальное количество цветов можно использовать в изображении?
В ответе запишите только число.

Решение:

  1. Выпишем условия задачи:
    • Размер изображения: 486 * 720
    • Объём памяти для сжатого изображения: 80 Кбайт = 80 * 1024 * 8 = 655360 бит
    • После сжатия размер изображения стал на 15% меньше исходного, т.е. сжатое изображение составляет 85% от исходного.
    • Для кодирования цвета каждого пикселя используется одинаковое количество бит
  2. Находим объём исходного (несжатого) изображения:
    так как сжатое изображение составляет 85% от исходного, объём исходного изображения I(исх)​ можно найти по формуле:
  3. Вычисляем количество бит на один пиксель: общее количество пикселей в изображении:
    пикселей
    Тогда количество бит на пиксель i можно найти, разделив объём исходного изображения на количество пикселей: (655360 / 0,85) / 349920 = 2 бита на пиксель (округляем вниз)
  4. Максимальное количество цветов N определяется по формуле:Подставляем значение i = 2:

Ответ: 4

Задание 7 ЕГЭ по информатике — это базовая задача, направленная на проверку умения определять объём памяти, необходимый для хранения и передачи текстовой, графической и звуковой информации. Все рассмотренные нами прототипы задач показывают, что подход к решению достаточно однообразен. Основная задача — внимательно читать условия, понимать параметры и использовать подходящие формулы для расчётов.

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

Чтобы решить такие задачи эффективно, важно:

  1. Точно выписывать данные задачи и понимать, какие формулы нужно использовать.
  2. Проверять результаты на логичность — анализ полученного ответа позволяет убедиться, что он соответствует условиям.
  3. Использовать аналитический подход. Это помогает лучше понять задачу и выбрать оптимальный метод решения.
  4. Знать степени двойки. и уметь ими пользоваться — это существенно упрощает расчёты, особенно при работе с глубиной цвета и количеством цветов.

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

8 задание

Задача 8 в ЕГЭ по информатике проверяет учеников на знание основ комбинаторики. В нем вам предстоит находить количество всевозможных последовательностей и находить определенные слова.

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

Давайте разберем основные термины и понятия

Комбинаторика — раздел математики, посвящённый решению задач, связанных с выбором и расположением элементов некоторого множества. Мы будем очень часто возвращаться к законам и формулам из комбинаторики.

Давайте разберем простую задачу из комбинаторики: есть трехзначный код, цифры в котором не могут повторяться, нужно найти количество всевозможных кодов. На первом месте может находиться одна цифра из 10. Так как цифры не повторяются, на втором месте только одна из 9, а на третьем – одна из 8. Количество всевозможных кодов – перемноженное количество возможных цифр на каждом месте = 10 * 9 * 8 = 720.

Теперь давайте разберем три формулы комбинаторики, которые мы будем использовать.

Формулы перестановки, размещения и сочетания используются в комбинаторике для расчета различных комбинаций объектов.

1. Перестановка

Перестановка – это расположение всех элементов множества в определённом порядке. Если у нас есть n различных элементов, то количество возможных перестановок из этих элементов обозначается как Pn и рассчитывается по формуле:

где n! (факториал n) – это произведение всех чисел от 1 до n.

Для множества из трёх элементов {A, B, C} возможные перестановки: ABC, ACB, BAC, BCA, CAB, CBA. Всего 3! = 6 перестановок.

2. Размещение

Размещение – это расположение некоторых элементов множества в определённом порядке. Если у нас есть n различных элементов и мы выбираем k элементов для размещения, то количество возможных размещений обозначается как  и рассчитывается по формуле:

Пусть у нас есть множество из трёх элементов {A, B, C}, и мы выбираем два элемента для размещения. Возможные размещения: AB, AC, BA, BC, CA, CB. Всего  размещений.

3. Сочетание

Сочетание – это выбор некоторых элементов множества без учёта порядка. Если у нас есть n различных элементов и мы выбираем k элементов, то количество сочетаний обозначается как  и рассчитывается по формуле:

Пусть у нас есть множество из трёх элементов {A, B, C}, и мы выбираем два элемента. Возможные сочетания: AB, AC, BC. Всего  сочетания.

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

Теперь давайте разберем библиотеку itertools и все нужные функции для 8 задания.

Чтобы использовать функции из библиотеки, необходимо в самом начале python файла написать from itertools import *

1. permutations()

Функция permutations генерирует все возможные перестановки из элементов последовательности. Можно указать количество элементов для перестановки. Если это значение не указано, берётся вся последовательность. Это аналог формул перестановки и размещения. Используется в случаях, когда каждый символ используется 1 раз и порядок символов важен.

permutations(iterable, r)
iterable — последовательность (например, список или строка).
r — длина перестановки.

Пример:
list(permutations([1, 2, 3]))
Результат: [(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]

2. product

Функция product генерирует все возможные перестановки из элементов последовательности, причем элементы могут повторяться. Нужно указать количество элементов для перестановки. Используется в случаях, когда каждый символ используется любое количество раз и порядок символов важен.

product(iterable, repeat=r)
iterable — несколько последовательностей.
r — число повторений.

Пример:
list(product([1, 2, 3], repeat=2))
Результат: [(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]

3. combinations

Функция combinations генерирует уникальные комбинации элементов из последовательности. Порядок элементов не имеет значения, а один и тот же элемент не используется повторно. Аналог формулы сочетаний. Используется в случаях, когда каждый символ используется 1 раз и порядок символов не важен.

combinations(iterable, r)
iterable — последовательность.
r — количество элементов в комбинации.

Пример:
list(combinations([1, 2, 3], 2))
Результат: [(1, 2), (1, 3), (2, 3)]

Этих знаний нам хватит, чтобы решать 8 задание.

Общий алгоритм действий при решении 8 задания

  1. Создадим алфавит из элементов которого будет состоять наше множество.
  2. Введем цикл и определим какую функцию нужно использовать в задании.
  3. Определим какие последовательности подходят.
  4. Выводим количество последовательностей.

Примеры:

Демоверсия 2025

Определите количество 12-ичных пятизначных чисел, в записи которых ровно одна цифра 7 и не более трёх цифр с числовым значением, превышающим 8.

2. ЕГКР 27.04.24

Сколько существует семизначных семеричных чисел, которые содержат в своей записи ровно две чётные цифры?

1. Создадим алфавит из элементов, из которых будет состоять наше множество Алфавит (цифры семеричной системы счисления): 0, 1, 2, 3, 4, 5, 6

2. Введем цикл и определим, какую функцию нужно использовать в задании

Для определения количества способов выбора позиций для чётных цифр будем использовать функцию сочетаний C(n, k), которая вычисляет количество способов выбрать k элементов из n без учёта порядка.

Нам нужно выбрать позиции для двух чётных цифр в семизначном числе.

3. Определим какие последовательности подходят

  • Выбор позиций для чётных цифр:
    Всего 7 позиций в числе.
    Необходимо выбрать 2 позиции из 7 для размещения чётных цифр.
  • Учитываем ограничения на первую цифру:
    Если первая цифра выбрана как чётная, она не может быть нулём.
    Если первая цифра выбрана как нечётная, она может быть любой из нечётных цифр.

Рассмотрим два случая:
Случай 1: Первая цифра является чётной.
Случай 2: Первая цифра является нечётной.

  1. Первая цифра — чётная
    Возможные варианты: 2, 4, 6
    Количество вариантов: 3
    Выбор оставшейся позиции для второй чётной цифры:
    Осталось 6 позиций.
    Необходимо выбрать 1 позицию из 6: C(6, 1) = 6
    Заполнение цифр:
    Первая цифра: 3 варианта (2, 4, 6)
    Вторая чётная цифра: 4 варианта (0, 2, 4, 6)
    Остальные 5 позиций: каждая может быть 1, 3, 5
    Общее количество чисел в этом случае = 3 * С(6,1) * 4 * 35 = 17496
  2. Первая цифра — нечётная
    Возможные варианты: 1, 3, 5
    Количество вариантов: 3
    Выбор позиций для двух чётных цифр из оставшихся 6 позиций:
    Необходимо выбрать 2 позиции из 6: C(6, 2) = 15
    Заполнение цифр:
    Две выбранные позиции: каждая может быть 0, 2, 4, 6
    Остальные 4 позиции: каждая может быть 1, 3, 5
    Общее количество чисел в этом случае = 3 * С(6, 2) * 42 * 34 = 58320

4. Выводим количество последовательностей

Общее количество допустимых семизначных семеричных чисел:
17496 + 58320 = 75816
Существует 75816 семизначных семеричных чисел, содержащих ровно две чётные цифры.

3. Досрочная волна 2024

Все 5-буквенные слова, в составе которых могут быть только буквы П, А, Р, У, С, записаны в алфавитном порядке и пронумерованы. Вот начало списка:

  1. ААААА
  2. ААААП
  3. ААААР
  4. ААААС
  5. ААААУ
  6. АААПА
  7. …

Под каким номером в списке идёт первое слово, которое содержит не более одной буквы У и не содержит букв А, стоящих рядом?

4. № 1941

Лиля составляет пятибуквенные слова из букв С, О, Т, К, А, П, Л, З. Слово не должно заканчиваться на гласную и содержать сочетания ЗЛО. Буквы в слове не повторяются. Сколько слов может составить Лиля?

5. Основная волна 2023 I

Все шестибуквенные слова, составленные из букв М, А, Н, Г, У, С, Т, записаны в алфавитном порядке и пронумерованы.

Вот начало начала списка:

  1. АААААА
  2. АААААГ
  3. АААААМ
  4. АААААН
  5. АААААС
  6. АААААТ
  7. АААААУ
  8. …

Под каким номером в списке стоит последнее слово, которое не начинается с буквы У, содержит только две буквы М и не более одной буквы Г

6. Основная волна 2023 II

«Все пятибуквенные слова, составленные из букв К, О, М, П, Ь, Ю, Т, Е, Р, записаны в алфавитном порядке и пронумерованы.

Вот начало списка:

  1. ЕЕЕЕЕ
  2. ЕЕЕЕК
  3. ЕЕЕЕМ
  4. ЕЕЕЕО
  5. ЕЕЕЕП
  6. ЕЕЕЕР
  7. ЕЕЕЕТ
  8. ЕЕЕЕЬ
  9. …

Под каким номером в списке стоит последнее слово с нечётным номером, которое не начинается с буквы Ь и содержит ровно две буквы К?

7. Пробник 09.2022

Определите количество пятизначных чисел, записанных в девятеричной системе счисления, которые не начинаются с нечётных цифр, не оканчиваются цифрами 1 или 8, а также содержат в своей записи не более одной цифры 3

8. Досрочная волна I 2023

Все четырехбуквенные слова, в составе которых могут быть только русские буквы А, В, Л, О, Р записаны в алфавитном порядке и пронумерованы начиная с 1. Ниже приведено начало списка.

  1. АААА
  2. АААВ
  3. АААЛ
  4. АААО
  5. АААР
  6. ААВА

Под каким номером идет первое слово, начинающееся на Л?

9. Основная волна 07.06.2024

Определите количество восьмеричных пятизначных чисел, которые не начинаются с нечётных цифр, не оканчиваются цифрами 2 или 6, а также содержат не более двух цифр

7.

Для успешного решения задачи 8 на ЕГЭ по информатике важно внимательно читать условия, правильно применять формулы комбинаторики (перестановки, размещения, сочетания) и использовать библиотеку itertools в Python.

Подберите правильную функцию (permutations, product, combinations) в зависимости от условий задачи: если порядок элементов важен, используйте permutations или product, если нет — combinations.

Создайте алфавит из разрешенных элементов и используйте фильтрацию для отбора подходящих последовательностей, избегая лишних вычислений.

9 задание

В девятом задании ЕГЭ по информатике составители хотят проверить наши навыки работы с числовыми данными в электронных таблицах. Это базовое задание, которое требует знания формул Excel и умения их правильно применять.

Давайте ближе познакомимся с Excel и изучим формулы, которые пригодятся для успешного выполнения этого задания.

Интерфейс Excel представляет собой таблицу с верхней панелью, на которой собрано множество различных функций и настроек.

Сначала давайте разберемся с самой таблицей и тем, что в ней можно делать. Самое простое — это вводить данные в каждую ячейку.

В этом примере мы ввели слово «мир» в ячейку B2, а цифру 3 — в ячейку C4. Умение определять координаты ячеек поможет при решении задач.

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

В примере выше мы использовали знак равно, а затем добавили простое арифметическое выражение. Однако возможности этого символа на этом не заканчиваются.

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

Еще один важный элемент при решении задач — это использование функций.

Как вызвать функцию:

1. Напишите знак «=» и введите название функции, затем в скобках укажите необходимые аргументы. После нажатия Enter результат функции появится в ячейке.

2. Вы нажимаете на кнопку функций

И ищете нужную вам функцию

Функций в Excel очень много и все они уникальны, но для решения 9го задания ЕГЭ по информатике нам нужны будут всего несколько:

  1. Функция =СУММ() – суммирует все выделенные числа;
  2. Функции =МАКС() и =МИН() находят максимальный и минимальный элемент соответственно;
  3. Функция =СЧЁТЕСЛИ() в Excel подсчитывает количество ячеек, соответствующих заданному условию;
  4. =ЕСЛИ() проверяет, выполняются ли заданные условия в выбранном диапазоне таблицы;
  5. =НАИБОЛЬШИЙ() и =НАИМЕНЬШИЙ() — формулы для нахождения наибольшего и наименьшего значений в Excel. В этой формуле мы указываем диапазон и аргумент, который означает, «позицию в рейтинге» самых больших (маленьких) чисел.

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

Ещё один полезный инструмент для решения задачи №9 — это фильтр. Чтобы его использовать, выделите столбцы, по которым хотите фильтровать, затем выберите пункт «Сортировка и фильтр» на верхней панели и нажмите «Фильтр».

У вас появятся настройки фильтрации.

Здесь мы можем отображать только те строки, которые нам нужны.

Давайте перейдём к разбору решений конкретных примеров:

Разберём задачу №9 ЕГЭ 2025 из демоверсии ФИПИ:

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

9_1.xls

Для всех прототипов этого задания способ решения будет один – анализируем условие, используем возможности электронных таблиц:

Открываем наш файл в электронных таблицах и внимательно читаем условие: нам нужно найти количество строк, в которых

  • только одно число повторяется трижды, остальные числа различны;
  • квадрат суммы всех повторяющихся чисел больше квадрата суммы всех её неповторяющихся чисел.

Для определения количества повторяющихся чисел используем функцию =СЧЁТЕСЛИ(), у которой первый аргумент – это наш диапазон, а второй – наш критерий счёта. В качестве диапазона мы выбираем нашу строчку (начинаем с первой, поэтому A1:F1), а в качестве критерия мы просто нажимаем на самую первую клетку, тогда формула нам посчитает, сколько в первой строчке чисел, равных первой клетке (то есть пяти).

Теперь нам нужно растянуть эту формула на 6 клеточек вправо, чтобы узнать, сколько раз встречается каждое число в нашей строке (но тут есть важный момент: просто растянуть нельзя, потому что Excel автоматически продлевает наш диапазон, и мы считаем число вхождений уже не в исходной строке, а в смещённой вправо, поэтому обязательно сами меняем диапазон в каждой ячейке на A1:F1):

Двойным кликом растягиваем формулу на все строки, для удобства выделим наш результат жёлтым:

Теперь анализируем: нам нужно, чтобы в строке только одно число повторялось трижды, а остальные числа должны быть различны, тогда в строке наших вхождений должно быть только 3 тройки (потому что каждое вхождение числа в исходную строку посчитается столько раз, сколько таких чисел в этой самой строке), и остальные 1 (то есть тоже ровно 3), значит нам нужно найти все такие строки: опять воспользуемся нашей формулой =СЧЁТЕСЛИ(), растянем её по всем строчкам и для удобства выделим зелёным цветом:

С первым условием задачи мы разобрались, переходим ко второму:
квадрат суммы всех повторяющихся чисел строки больше квадрата суммы всех её неповторяющихся чисел. Думаем, как мы можем найти все наши повторяющиеся числа. У нас уже есть информация и количестве вхождения числа в строку, давайте немножко модифицируем её: если число повторяется, напишем один, иначе – ноль (для этого воспользуемся формулой =ЕСЛИ()):

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

Сейчас мы можем найти разность между суммой исходной строки и суммой повторяющихся чисел (получим сумму неповторяющихся чисел), чтобы проверить наше условие, возведём эти значения в квадрат и найдём их разность (она должна быть больше нуля, потому что первое значение должно быть больше); воспользуемся формулой =ЕСЛИ() и =СУММ():

У нас есть 3 столбца:

  • Столбец количества троек в исходной строке;
  • Столбец количества единиц в исходной строке;
  • Столбец, в котором проверено второе условие задачи (если выполняется – 1, иначе — 0).

Мы можем просто проверить равенство первых двух столбцов тройке, сложить эти столбцы с третьим. Если сумма окажется равной трём, то этот столбец нам подходит:

Теперь чтобы узнать ответ достаточно выделить наш последний столбец и справа снизу экрана Excel нам подсказывает сумму выделенной области:

Ответ: 273

Конечно, это задание можно решить гораздо меньшим количеством формул, но тогда они будут сильно объемнее и непонятнее. В нашем решении мы каждое действие выполняем отдельно, всё аккуратно проверяем и нигде не можем ошибиться.

Дальше разберём задание из варианта досрочной волны 2024 года:

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

9_2.xlsx

Решение:

Нам нужно найти количество строк, в которых

  • максимальное число меньше суммы трёх оставшихся чисел;
  • четыре числа можно разбить на две пары чисел с равными суммами.

Открываем наш файл, мы сразу же с лёгкостью можем проверить первое условие с помощью формул =ЕСЛИ() и =МАКС(), сумма трёх оставшихся чисел равна разности общей суммы строки и максимального значения:

Чтобы проверить второе условие, сначала отсортируем нашу строку по возрастанию (можно по убыванию), для этого используем формулу =НАИБОЛЬШИЙ() или =НАИМЕНЬШИЙ(). Не забываем проверять диапазон и менять позицию в рейтинге (аргумент нашей формулы):

Теперь можно понять, что четыре числа строки можно разбить на две пары чисел с равными суммами только в том случае, если это будут пары:

  • Самое большое число + самое маленькое и сумма средних чисел;
  • Самое большое число + третье и второе число + самое маленькое.

В любом другом случае суммы точно будут различаться (одна будет больше другой). Проверим это условие с помощью формулы =ЕСЛИ() и =ИЛИ():

Значения «ЛОЖЬ» и «ИСТИНА» переведём в 0 и 1:

Чтобы строка удовлетворяла обоим условиям, сумма столбцов, в которых мы эти условия проверяли должна быть равна 2:

Выделяем столбец, смотрим в нижний правый угол экрана на строку Сумма, пишем ответ

Ответ: 128

Посмотрим основную волну 07.06.2024:

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

9_3.xlsx

Решение:

Нам нужно найти количество строк, в которых

  • наибольшее из четырёх чисел меньше суммы трёх других;
  • среди четырёх чисел есть только одна пара равных чисел.

Первое условие мы подробно разобрали в предыдущем примере, сейчас просто повторяем эти действия:

Для проверки второго условия, найдем количество вхождений каждого числа в нашу строку, воспользуемся формулой =СЧЁТЕСЛИ() – аналогично первому разобранному примеру:

Так как должна быть только одна пара равных чисел, то в нашей получившейся строке должно быть только 2 двойки (одно число повторяется дважды), проверим:

Сложим 2 столбца, в которых мы проверяли условия, сумма должна оказаться равной 3:

Выделяем столбец, смотрим сумму значений, пишем ответ:

Ответ: 147

Дальше разберём задание №9 из варианта основной волны 04.07.2024:

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

9_4.xlsx

Решение:

Нам нужно найти количество строк, в которых сумма наибольшего и наименьшего чисел меньше суммы двух оставшихся. Что-то подобное мы уже делали во втором примере.

Для сортировки значений по убыванию воспользуемся формулой =НАИБОЛЬШИЙ():

Сейчас мы легко можем сложить первое и четвёртое значение (как раз наибольшее и наименьшее) и из этой суммы вычесть 2 оставшихся:

Этот результат должен быть меньше нуля (по условию), проверим это с помощью формулы =ЕСЛИ():

Выделяем столбец, смотрим сумму значений, пишем ответ:

Ответ: 9997

Теперь давайте разберём задание №9 из варианта досрочной волны 2023:

Откройте файл электронной таблицы, содержащей в каждой строке пять натуральных чисел.

Определите количество строк таблицы, содержащих числа, для которых выполнены оба условия:

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

В ответе запишите только число.

9_5.xlsx

Решение:

Нам нужно найти количество строк, в которых

  • каждое число встречается по одному разу;
  • утроенная сумма максимального и минимального значений не превышает удвоенной суммы оставшихся чисел.

Первое условие легко проверить с помощью формулы =СЧЁТЕСЛИ(): каждое значение должно входить в строку только один раз, значит общая сумма получившихся значений должна быть равна 5 (количество чисел в строке). Не забывайте проверять диапазон и аргумент:

Второе условие тоже проверить достаточно просто, мы так уже делали: используем формулу =НАИБОЛЬШИЙ(), чтобы отсортировать значения в нашей строке по убыванию:

Теперь, когда мы знаем порядок, в котором наши числа убывают, легко можем проверить, выполняется ли условие: утроенная сумма максимального и минимального значений не превышает удвоенной суммы оставшихся чисел.

Сложим 2 столбца, в которых мы проверяли условия, сумма должна оказаться равной 2:

Выделяем столбец, смотрим сумму значений, пишем ответ:

Ответ: 853

Решим задачу из основной волны(III) 2023-го года:

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

9_6.xlsx

Решение:

Нам нужно найти сумму всех чисел в строке таблицы с наименьшим номером, для чисел которой выполнены оба условия

  • есть два числа, каждое из которых повторяется дважды, остальные три числа различны;
  • максимальное число строки не повторяется.

Начинаем как обычно с первого условия, используем формулу =СЧЁТЕСЛИ(), чтобы найти количество вхождений каждого числа в нашу строку. Чтобы условие выполнялось, должно получиться ровно 4 двойки и 3 единицы:

Переведём ЛОЖЬ и ИСТИНУ в 0 и 1:

Чтобы проверить второе условие, нам нужно найти максимальное число в строке с помощью формулы =МАКС() и опять воспользоваться =СЧЁТЕСЛИ(), чтобы проверить количество повторений этого наибольшего числа (оно должно быть равно 1):

Сложим два столбца, в которых мы проверяли условия, сумма должна оказаться равной 2:

Теперь воспользуемся фильтром:

Видим, что первая строка, которая нам подходит – это строк под номером 787:

Найдем сумма чисел этой строки:

Ответ: 261

Теперь посмотрим задание из варианта с досрочной волны 2022-го года:

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

9_7.xlsx

Решение:

Нам нужно найти количество строк, в которых квадрат суммы максимального и минимального чисел больше суммы квадратов трёх оставшихся.
Для сортировки значений по убыванию воспользуемся формулой =НАИБОЛЬШИЙ():

Посчитаем отдельно квадрат суммы максимального и минимального и сумму квадратов трёх оставшихся:

Сравним их:

Выделяем столбец, смотрим сумму значений, пишем ответ:

Ответ: 2585

Ну и напоследок решим задачу из демоверсии этого же года:

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

В ответе запишите только число

9_8.xls

Решение:

Это задание отличается от всех предыдущих своим условием, но решение от этого не усложнится: мы просто проверим неравенство треугольника для каждого числа строки (длина любой стороны треугольника всегда меньше суммы длин двух его других сторон):

Сумма этих трёх столбцов должна быть равна трём (если условие выполняется):

Выделяем столбец, смотрим сумму значений, пишем ответ:

Ответ: 2453

Задание 9 ЕГЭ по информатике — это базовая задача, направленная на проверку навыков работы с числовыми данными в электронных таблицах, а также умения применять основные функции Excel для анализа информации. Варианты подобных задач различны, но их решение подчиняется общему алгоритму. Основные шаги включают внимательное чтение условия, разбор требований и использование подходящих формул.

Ключевые аспекты:

  1. Использование основных функций. Для решения задач потребуются базовые функции Excel, такие как СЧЁТЕСЛИ(), СУММ(), МАКС(), МИН(), НАИБОЛЬШИЙ(), ЕСЛИ() и ИЛИ(). Эти функции позволяют выполнять операции, необходимые для анализа данных в строках таблицы.
  2. Анализ условий. В каждой задаче необходимо последовательно проверять условия. Например, условия на повторение чисел, суммирование, сравнение квадратов сумм, выполнение неравенства треугольника и так далее. Важно разбирать каждое условие отдельно, используя подходящие формулы и функции.
  3. Работа с диапазонами. Не забывайте проверять и корректировать диапазоны, особенно при копировании формул. Это поможет избежать ошибок и ускорить решение задачи.
  4. Использование фильтров. Фильтры в Excel — полезный инструмент для быстрого отображения строк, удовлетворяющих условиям задачи. Это особенно удобно при больших объемах данных.
  5. Пошаговая проверка. Разделите задачу на этапы и решайте каждое условие отдельно, чтобы избежать путаницы. Этот подход также помогает убедиться, что все условия выполнены корректно.
  6. Проверка логичности ответа. После завершения вычислений полезно просмотреть результаты на логичность. Это помогает убедиться, что ответы соответствуют условиям задачи.

Для успешного решения заданий такого типа на экзамене важно:

  1. Четко понимать условия задачи и знать, какие формулы следует использовать для их проверки.
  2. Уверенно работать с основными функциями Excel, поскольку многие задачи сводятся к их грамотному применению.
  3. Внимательно следить за диапазонами, чтобы формулы правильно применялись ко всем строкам таблицы.
  4. Проверять и анализировать ответ на логичность и соответствие условиям.

Запомните, что все рассматриваемые задачи требуют внимательности, аналитического подхода и уверенного владения инструментами Excel.

10 задание

В десятом задании ЕГЭ по информатике проверяются наши навыки поиска информации с помощью текстового редактора. Это простое задание, требующее знаний о некоторых инструментах Microsoft Word и умения их корректно использовать.

Для начала давайте разберёмся с интерфейсом Word, посмотрим, какая кнопка за что отвечает:

При открытии приложения мы видим верхнюю панель или ленту:

Чтобы нам открыть панель поиска, которая нужна для успешного решения заданий №10, нужно нажать на кнопку найти с иконкой лупы в правом верхнем углу (также здесь можно выбрать расширенный поиск):

Откроется вот такая вкладка, в которую мы можем писать слова (сочетания символов), которые хотим найти в тексте:

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

Откроется окно параметров поиска, в котором можно выбирать какие-то уточнения к поиску (например, «учитывать регистр», если в задании просят считать только слова с большой буквы (или только с маленькой) или «только слово целиком», если в задании нас просят искать только сочетания букв, которые образуют отдельные слова)

Также нужно добавить, что для открытия панели поиска удобно использовать сочетание клавиш Ctrl + F.

Перейдём к способам решения задачи №10 ЕГЭ по информатике:

Способ 1: Стандартный поиск

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

Способ 2: Расширенный поиск

Расширенный поиск, в отличие от стандартного, позволяет находить интересующую в документе информацию с учетом множества дополнительных параметров, например, учитывая при проверке регистр символов, подстановочные знаки и даже произношение слов. Важным является тот факт, что в каждой версии Microsoft Word расширенный поиск осуществляется в основном одинаково. Прежде всего, необходимо открыть расширенный поиск. Делается это непосредственно в окне «Найти и заменить». Находясь в нужном меню, щелкните по кнопке «Больше», чтобы развернуть весь список параметров.

Вариант 1: Microsoft Word 2013–2021

В версиях Microsoft Word 2013–2021 для выполнения поиска можно открыть специальную навигационную панель, которая выделяет текст, совпадающий с запросом пользователя. Дополнительно можно просматривать результаты по заголовкам и страницам. Панель поиска вызывается кнопкой на ленте инструментов: перейдите на вкладку «Главная» и нажмите «Найти» в блоке «Редактирование» справа. Слева откроется панель поиска, куда вводится текст для поиска. Найденные совпадения подсвечиваются в панели ниже и выделяются в тексте документа цветом (обычно желтым).

Давайте перейдём к решению задач:

Второй способ и первый вариант разберём на примере задания №10 ЕГЭ 2025 из демоверсии ФИПИ:

С помощью текстового редактора определите, сколько раз встречается сочетание букв «по» или «По» в составе других слов, включая сложные слова, соединённые дефисом, но не как отдельное слово в тексте глав XII и XIV третьей части тома 2 романа Л.Н. Толстого «Война и мир». В ответе укажите только число.

10_1.docx

Решение:

  • Открываем наш текстовый файл, внимательно читаем и анализируем условия
  • Открываем панель поиска и вводим наше слово для поиска (по условию «по»):

  • Анализируем результат: мы нашли количество сочетаний букв «по» или «По» и в сочетании других слов, и как отдельные слова (их нам нужно исключить) во всём тексте, а нам нужны только XII и XIV третьей части тома 2. Как мы можем это сделать? Давайте создадим новый текстовый документ Word и скопируем в него текст только нужных глав (для этого нужно открыть приложение Word, нажать на новый документ, и скопировать в него нужный фрагмент, который мы можем найти с помощью поиска по ключевому запросу «часть третья» и небольшого скроллинга текста до наших глав):

  • После того, как мы скопировали нужный фрагмент, повторяем пункты 1 и 2:

  • Видим, что результатом поиска является 112 сочетаний, но не спешим писать ответ! В этом количестве сочетаний также присутствуют отдельные слова «по» и «По», а нам их считать не нужно, поэтому с помощью расширенного поиска фильтруем наш результат:

  • Теперь количество результатов стало 10, но в их числе, если внимательно посмотреть, есть слово «по-гречески», которое по условию мы нашли считать, тогда отдельных слов «по» и «По» у нас только 9:
  • Из общего количества сочетаний вычитаем 9 отдельных слов: 112 – 9 = 103

Ответ: 103

Дальше посмотрим задание из варианта с основной волны 07.06.2024:

С помощью текстового редактора определите, сколько раз встречается сочетание букв «он» или «Он» только в составе других слов, но не как отдельное слово, в тексте 2 тома Л.Н. Толстого «Война и мир». В ответе укажите только число.

10_2.doc

Решение с помощью расширенного поиска:

  • Открываем наш текстовый файл, внимательно читаем условия
  • Открываем панель поиска и вводим наше слово для поиска (по условию «он»):

  • Теперь в параметрах поиска нажимаем галочку «только слово целиком» и ищем количество отдельных слов «он» и «ОН»:

  • Вычитаем из общего количества сочетаний число отдельных слов: 4694 – 2016 = 2678

Ответ: 2678

Разберём прототип из варианта основной волны(II) 2023го года:

С помощью текстового редактора определите, сколько раз встречается слово «Лбов», начинающееся с прописной буквы, в тексте повести А.И. Куприна «Поединок». Другие формы слова «Лбов», такие как «Лбову» и т.д., учитывать не следует.

В ответе укажите только число.

10_3.doc

Решение с помощью обычного поиска с применением параметров:

  • Открываем наш текстовый файл, внимательно читаем условия
  • Открываем панель поиска и вводим наше слово для поиска (по условию «Лбов»), заходим в параметры поиска и нажимаем галочки «учитывать регистр» и «только слово целиком»:

  • Пишем ответ

Ответ: 28

Проанализируем следующий прототип задачи:

Определите, сколько раз в тексте произведения А. С. Пушкина «Капитанская дочка» встречается имя Емельян в любом падеже.

10_4.docx

Решение с помощью обычного поиска:

  • Открываем текстовый документ.
  • Открываем Панель поиска.
  • Вводим текст для поиска.
  • Проанализируем результат: здесь необходимо проверить, нет ли вхождения искомого слова в другое. В данном примере этого нет.
  • Ниже предоставлен фрагмент экрана.

Ответ: 3

Разберём ещё один прототип:

Определите, сколько раз в тексте поэмы Н. А. Некрасова «Кому на Руси жить хорошо» встречается слово «Мой» написанное с прописной буквы. Другие формы слова «Мой», такие как «Мои», «Моего» и прочие учитывать не следует.

10_5.doc

Решение с помощью обычного поиска:

  • Открываем текстовый документ, с которым будем работать.
  • Открываем Панель поиска, чтобы быстро находить нужные фразы или слова.
  • Вводим текст или слово, которое нужно найти, в поле поиска на панели.
  • Проверяем результаты поиска, чтобы убедиться, что найденные слова не являются частью других слов. В этом примере таких вхождений нет.
  • Ниже представлен фрагмент экрана с результатами поиска.

Ответ: 5

Разберём ещё одно задание №10:

С помощью текстового редактора определите, сколько раз, не считая сносок, встречается слово «его» или «Его» в тексте романа в стихах А. С. Пушкина «Евгений Онегин». Другие формы слова «его» учитывать не следует. В ответе укажите только число.

10_6.docx

Решение с применением обычного поиска:

  • Открываем текстовый документ, с которым будем работать.
  • Открываем Панель поиска, чтобы быстро находить нужные слова.
  • Вводим текст для поиска, начиная с прописной буквы.
  • Анализируем результаты поиска: проверяем, чтобы искомое слово не входило в состав других слов. В этом примере нам нужно исключить 11 вхождений в другие слова.
  • Ниже приведён фрагмент экрана с результатами поиска.

Ответ: 21

Вариант 2: MicrosoftWord 2007 – 2010

В Microsoft Word 2007–2010 поиск осуществляется аналогично, с некоторыми отличиями в графическом интерфейсе программы. Чтобы начать поиск, установите курсор в начало документа, чтобы анализ захватывал весь текст. Затем перейдите на вкладку «Главная» и нажмите кнопку «Найти», расположенную в разделе «Редактирование» на панели инструментов.

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

Когда поиск завершится, может появиться всплывающее окно с сообщением «Приложение Word завершило поиск документа». Это означает, что все совпадения в тексте были найдены. Нажмите «ОК», чтобы закрыть это окно.

В этом же окне можно искать слово или фразу как по всему документу, так и в его отдельной части. Для поиска в конкретной части документа нужно сначала выделить нужный фрагмент текста, а затем выбрать кнопку «Найти в». Это откроет дополнительное меню, где можно выбрать параметр «Текущий фрагмент» или «Основной документ». После этого все совпадения с введённым запросом будут выделены в тексте.

Последняя функция стандартного поиска позволяет сделать выделение результата постоянным, так что оно не исчезнет при чтении и редактировании. Для этого нажмите кнопку «Выделение при чтении» и выберите «Выделить все» в появившемся меню. Найденные слова сразу будут обрамлены жёлтым цветом. Чтобы убрать это выделение, снова нажмите на кнопку «Выделение при чтении», но выберите опцию «Снять выделение».

Ещё один прототип:

С помощью текстового редактора определите, сколько раз, не считая сносок, встречается слово «дом» или «Дом» в тексте романа в стихах А. С. Пушкина «Евгений Онегин». Другие формы слова «дом», такие как «дома», «домой» и т. д., учитывать не следует. В ответе укажите только число.

10_7.docx

Решение с применением обычного поиска:

  • Открываем текстовый документ, с которым будем работать.
  • Открываем Панель поиска, чтобы начать поиск нужного текста.
  • Вводим текст, который хотим найти, в поле поиска.
  • Чтобы сделать поиск более точным, устанавливаем дополнительные параметры. Например, ставим галочку для поиска только целых слов, чтобы исключить частичные совпадения.
  • Ниже приведён фрагмент экрана с результатами поиска.

Ответ: 1

Посмотрим, как решается ещё один подобный пример:

Определите, сколько раз в тексте произведения Н. В. Гоголя «Нос» встречается слово Нос в любом числе и падеже. В ответе укажите только число.

10_8.docx

Решение с помощью расширенного поиска:

  • Открываем текстовый документ, с которым будем работать.
  • Открываем Панель поиска, чтобы начать поиск нужного текста.
  • Вводим текст для поиска. В этом случае стандартный поиск не даёт точного результата из-за большого количества совпадений.
  • Переходим к расширенному поиску и добавляем параметр «Учитывать регистр», чтобы сузить результаты.
  • Ниже приведены два фрагмента экрана с результатами поиска.

Ответ: 8

Разберём ещё один пример с помощью 2го варианта:

Определите, сколько раз в тексте произведения А. С. Пушкина «Капитанская дочка» встречается слово «капитанская» или «Капитанская». Другие формы этого слова («капитанскую», «капитанские» и т. д.) учитывать не надо. В ответе укажите только число.

10_9.docx

Решение с применением обычного поиска:

  • Открываем текстовый документ, с которым будем работать.
  • Открываем Панель поиска, чтобы начать поиск нужного текста.
  • Вводим текст для поиска.
  • Анализируем результат: поиск выдал 5 совпадений, но они включают заголовок и эпиграф. Оставляем только 2 совпадения в основном тексте.
  • Ниже приведён фрагмент экрана с результатами поиска.

Ответ: 2

Задание №10 ЕГЭ по информатике проверяет наши навыки информационного поиска в текстовом редакторе или операционной системе. Здесь не требуются сложные теоретические знания, но важно уметь правильно использовать инструменты поиска и фильтрации в Microsoft Word для достижения точных результатов.

Ключевые моменты, на которые стоит обратить внимание:

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

Следуя этим рекомендациям, вы сможете уверенно решать задания на информационный поиск, избегая распространённых ошибок.

11 задание

В задании 11 ЕГЭ по информатике проверяется умение считать объем памяти данных. Это довольно простое задание, для решения которого необходимо знать несколько формул и как переводить биты в байты, килобайты и т. д.

Давайте разберем всю теорию, необходимую для решения 11 задания.

Любая информация хранится в битах. Бит – минимальная единица измерения информации. Бит может быть равен 0 или 1, значит одним битом можно закодировать два случая – правда или ложь. Двумя битами можно закодировать 4 случая: 00, 01, 10, 11. Тремя – 8 случав и т. д. Так, если у нас есть информация, которая принимает 4 возможных значения, то мы можем закодировать ее 2 битами (например, двумя битами кодируется направление: вверх – 00, вправо – 01, вниз – 10, влево — 11). Получается, что количество значений у какой-либо информации равняется двойке в степени, равной количеству бит. Мы вывели формулу:

где N – количество возможных событий, I – количество бит

Если у нас есть информация, которая может принимать 3 значения, мы ее тоже кодируем 2 битами, то есть N <= 2i (потому что одним битом мы закодировать не сможем, а двумя сможем, просто одна комбинация бит не будет использоваться)

Давайте научимся переводить биты в байты, килобайты и т.д.

Чтобы перевести биты в другие единицы хранения, сначала нужно понять, что 1 байт = 8 бит. Поэтому, чтобы получить количество байт, делим число бит на 8. Затем, чтобы перевести байты в более крупные единицы, такие как килобайты, мегабайты, и так далее, используем множитель 1024: 1 килобайт (КБ) = 1024 байта, 1 мегабайт (МБ) = 1024 килобайта и так далее. Например, для перевода 8192 бит в килобайты: сначала делим 8192 на 8, получаем 1024 байта, а затем делим на 1024, получая 1 килобайт.

Далее давайте рассмотрим формулу нахождения объема памяти сообщения I.

Чтобы найти общий объем I, нужно умножить все элементы этого сообщения на объем памяти, занимаемый одним элементом. Формула выглядит так:

где I – объем сообщения, L– количество символов в сообщении, i – объем одного символа

Мы разобрали основные понятия и формулы для решения 11 задачи ЕГЭ.

Давайте выведем основной алгоритм решения:

  1. Посчитать алфавит
  2. Найти объем одного символа по формуле
  3. Найти объем одного сообщения по формуле
  4. Посчитать общий объем памяти, нужный для решения задачи

Алгоритм может меняться в зависимости от условия задачи, но две изученные нами формулы – опорные точки, которые применяются в каждой задаче.

Демоверсия 2025

На предприятии каждой изготовленной детали присваивают серийный номер, содержащий десятичные цифры, 52 латинские буквы (с учётом регистра) и символы из 963-символьного специального алфавита. В базе данных для хранения каждого серийного номера отведено одинаковое и минимально возможное число байт. При этом используется посимвольное кодирование серийных номеров, все символы кодируются одинаковым и минимально возможным числом бит. Известно, что для хранения 2000 серийных номеров отведено не более 693 Кбайт памяти. Определите максимально возможную длину серийного номера. В ответе запишите только целое число.

1. Посчитать алфавит
Десятичные цифры: 10 символов.
Латинские буквы (с учётом регистра): 52 символа.
Специальные символы: 963 символа.
Общий размер алфавита:
10 + 52 + 963 = 1025 символов

2. Найти объем одного символа по формуле
Для кодирования каждого символа нужно минимальное количество бит i, такое что 2^i >= N, где N — размер алфавита.
2^10 = 1024 < 1025
2^11 = 2048 >= 1025
Следовательно, требуется 11 бит на символ.

3. Найти объем одного сообщения по формуле
Пусть L — длина серийного номера в символах.
Общее количество бит для одного номера:
I = L * 11 бит

4. Посчитать общий объем памяти, нужный для решения задачи

Из условия известно, что для 2000 серийных номеров выделено 693 Кбайт:
693 Кбайт = 693 * 1024 = 709632 байт

Объем памяти на один номер:
709632 / 2000 = 354.816 байт
Округляем до 354 байт

Теперь найдем максимальную длину серийного номера L:
(11 * L) / 8 байт <= 354 байт
11L <= 354 * 8
11L <= 2832
L <= 2832 / 11 ≈ 257.45

Максимальная длина L равна 257 символов.

Демоверсия 2024

При регистрации в компьютерной системе каждому объекту присваивается идентификатор, состоящий из 60 символов и содержащий только десятичные цифры и символы из 250-символьного специального алфавита. В базе данных для хранения каждого идентификатора отведено одинаковое и минимально возможное целое число байт. При этом используется посимвольное кодирование идентификаторов, все символы кодируются одинаковым и минимально возможным количеством бит. Определите объём памяти (в Кбайт), необходимый для хранения 65 536 идентификаторов. В ответе запишите только целое число – количество Кбайт.

1. Посчитать алфавит
Общий размер алфавита:
10 + 250 = 260 символов

2. Найти объем одного символа по формуле
Для кодирования каждого символа нужно минимальное количество бит i, такое что 2^i >= N, где N — размер алфавита.
2^8 = 256 < 260
2^9 = 512 >= 260
Следовательно, требуется 9 бит на символ.

3. Найти объем одного сообщения по формуле
Длина идентификатора в символах = 60 символов.
Общее количество бит для одного идентификатора:
I = 60 * 9 = 540 бит
Переводим в байты:
540 / 8 = 67,5 байт
Округляем вверх, так как нам нужно уместить информацию на 67,5 байтах, но нецелым число байтов быть не может. Получаем 68 байт.

4. Посчитать общий объем памяти, нужный для решения задачи
Необходимо хранить 65 536 идентификаторов.
Общий объем памяти в байтах:
65536 * 68 = 4,456,448 байт
Переводим в Кбайт:
4,456,448 / 1024 = 4352 Кбайт

Основная волна 19.06.2024 (Центр)

На предприятии каждой изготовленной детали присваивается серийный номер, содержащий десятичные цифры, 26 латинских букв (без учёта регистра) и символы из 450-символьного специального алфавита. В базе данных для хранения каждого серийного номера отведено одинаковое и минимально возможное число байт. При этом используется посимвольное кодирование серийных номеров, все символы кодируются одинаковым и минимально возможным числом бит. Известно, что для хранения 708 серийных номеров отведено более 213 Кбайт памяти. Определите минимально возможную длину серийного номера. В ответе запишите только целое число.

1. Посчитать алфавит
Общий размер алфавита:
10 + 26 + 450 = 486 символов

2. Найти объем одного символа по формуле
Для кодирования каждого символа нужно минимальное количество бит i, такое что 2 в степени i больше или равно N, где N — размер алфавита.
2^8 = 256 < 486
2^9 = 512 >= 486
Следовательно, требуется 9 бит на символ.

3. Найти объем одного сообщения по формуле
Пусть L — длина серийного номера в символах.
Общее количество бит для одного номера:
I = 9 * L бит

4. Посчитать общий объем памяти, нужный для решения задачи
Из условия известно, что для хранения 708 серийных номеров выделено более 213 Кбайт памяти.
Переводим Кбайты в байты:
213 Кбайт = 213 * 1024 = 218112 байт
Общий объем памяти на один серийный номер:
218112 / 708 ≈ 308.4 байт
Так как объем памяти должен быть целым числом, получаем, округляем вверх и получаем 309 байт
Теперь найдём минимальную длину серийного номера L:
9L = 309 * 8
9L = 2472
L = 2472 / 9 ≈ 274.67
Мы получили, что количество символов – дробное число. Если мы возьмем больше, то превысим объем памяти на один серийный номер, поэтому округляем в меньшую сторону и получаем 274.

Демоверсия 2023

При регистрации в компьютерной системе каждому объекту присваивается идентификатор, состоящий из 250 символов и содержащий только десятичные цифры и символы из 1650-символьного специального алфавита. В базе данных для хранения каждого идентификатора отведено одинаковое и минимально возможное целое число байт. При этом используется посимвольное кодирование идентификаторов, все символы кодируются одинаковым и минимально возможным количеством бит. Определите объём памяти (в Кбайт), необходимый для хранения 65 536 идентификаторов. В ответе запишите только целое число – количество Кбайт.

1. Посчитать алфавит
Общий размер алфавита:
10 + 1650 = 1660 символов.

2. Найти объем одного символа по формуле
Для кодирования каждого символа нужно минимальное количество бит i, такое что 2 в степени i больше или равно N, где N — размер алфавита.
2^10 = 1024 < 1660
2^11 = 2048 >= 1660
Следовательно, требуется 11 бит на символ.

3. Найти объем одного сообщения по формуле
Длина идентификатора составляет 250 символов.
Общее количество бит для одного идентификатора:
I = 250 * 11 = 2750 бит
Переводим в байты, округляя вверх, так как нам нужно сохранить всю информацию:
2750 / 8 = 343,75 = 344 байт

4. Посчитать общий объем памяти, нужный для решения задачи
Необходимо хранить 65 536 идентификаторов.
Общий объем памяти в байтах:
65536 * 344 = 22,544,384 байт
Переводим в Кбайт:
22,544,384 / 1024 = 22016 Кбайт

Основная волна 2023 I

При регистрации в компьютерной системе каждому объекту присваивается идентификатор, состоящий из 105 символов и содержащий только десятичные цифры и символы из 1500-символьного специального алфавита. В базе данных для хранения сведений о каждом идентификаторе отведено одинаковое и минимально возможное целое число байт. При этом используется посимвольное кодирование идентификаторов, все символы кодируются одинаковым и минимально возможным количеством бит. Определите объём памяти (в Кбайт), необходимый для хранения сведений о 16 384 объектах. В ответе запишите только целое число – количество Кбайт.

1. Посчитать алфавит
Общий размер алфавита:
10 + 1500 = 1510 символов

2. Найти объем одного символа по формуле
Для кодирования каждого символа нужно минимальное количество бит i, такое что 2 в степени i больше или равно N, где N — размер алфавита.
2^10 = 1024 < 1510
2^11 = 2048 >= 1510
Следовательно, требуется 11 бит на символ.

3. Найти объем одного сообщения по формуле
Длина идентификатора составляет 105 символов.
Общее количество бит для одного идентификатора:
I = 105 * 11 = 1155 бит
Переводим в байты, округляя вверх, так как нам нужно сохранить всю информацию:
1155 / 8 = 144,375 = 145 байт

4. Посчитать общий объем памяти, нужный для решения задачи
Необходимо хранить 16 384 идентификатора.
Общий объем памяти в байтах:
16384 * 145 = 2,375,680 байт
Переводим в Кбайт:
2,375,680 / 1024 = 2320 Кбайт

Досрочная волна I 2023

При регистрации в компьютерной системе каждому объекту присваивается идентификатор, состоящий из 113 символов и содержащий только десятичные цифры и символы из 2025-символьного специального алфавита. В базе данных для хранения каждого идентификатора отведено одинаковое и минимально возможное целое число байт. При этом используют посимвольное кодирование идентификаторов, все символы кодируют одинаковым и минимально возможным количеством бит. Определите объём памяти (в Кбайт), необходимый для хранения 32 768 идентификаторов.

В ответе запишите только целое число – количество Кбайт.

1. Посчитать алфавит
Общий размер алфавита:
10 + 2025 = 2035 символов

2. Найти объем одного символа по формуле
Для кодирования каждого символа нужно минимальное количество бит i, такое что 2^i >= N, где N — размер алфавита.
2^11 = 2048 >= 2035
Следовательно, требуется 11 бит на символ.

3. Найти объем одного сообщения по формуле
Длина идентификатора составляет 113 символов.
Общее количество бит для одного идентификатора:
I = 113 * 11 = 1243 бит

Переводим в байты, округляя вверх, так как нам нужно сохранить всю информацию:
1243 / 8 = 155,375 = 156 байт

4. Посчитать общий объем памяти, нужный для решения задачи
Необходимо хранить 32 768 идентификаторов.
Общий объем памяти в байтах:
32768 * 156 = 5,111,808 байт
Переводим в Кбайт:
5,111,808 / 1024 = 4992 Кбайт

Демоверсия 2022

При регистрации в компьютерной системе каждому объекту сопоставляется идентификатор, состоящий из 15 символов и содержащий только символы из 8-символьного набора: A, B, C, D, E, F, G, H. В базе данных для хранения сведений о каждом объекте отведено одинаковое и минимально возможное целое число байт. При этом используют посимвольное кодирование идентификаторов, все символы кодируют одинаковым и минимально возможным количеством бит. Кроме собственного идентификатора, для каждого объекта в системе хранятся дополнительные сведения, для чего отведено 24 байта на один объект.

Определите объём памяти (в байтах), необходимый для хранения сведений о 20 объектах. В ответе запишите только целое число – количество байт.

1. Посчитать алфавит
Общий размер алфавита — 8 символов

2. Найти объем одного символа по формуле
Необходимо минимальное количество бит i, такое что 2^i ≥ 8.
2^3 = 8 >= 8
Требуется 3 бита на символ.

3. Найти объем одного сообщения по формуле
Длина идентификатора: 15 символов.
Общее количество бит для одного идентификатора:
I = 15 * 3 = 45 бит
Переводим в байты, округляя вверх, так как нам нужно сохранить всю информацию:
45 / 8 = 5,625 = 6 байт

Добавляем дополнительные сведения:
Общий объем на один объект = 6 + 24 = 30 байт

4. Посчитать общий объем памяти, нужный для решения задачи
Необходимо хранить 20 объектов.
Общий объем памяти:
20 * 30 = 600 байт

Основная волна 2022 III

При регистрации в компьютерной системе каждому объекту присваивается идентификатор, состоящий из 32 символов и содержащий только десятичные цифры и символы из 63-символьного специального алфавита. В базе данных для хранения каждого идентификатора отведено одинаковое и минимально возможное целое число байт. При этом используется посимвольное кодирование идентификаторов, все символы кодируются одинаковым и минимально возможным количеством бит.

Определите объём памяти (в Кбайт), необходимый для хранения 3840 идентификаторов. В ответе запишите только целое число – количество Кбайт.

1. Посчитать алфавит
Общий размер алфавита:
10 + 63 = 73 символа

2. Найти объем одного символа по формуле
Для кодирования каждого символа необходимо минимальное количество бит i, такое что 2^i ≥ N, где N — размер алфавита.
Проверяем степени двойки:
2^6 = 64 < 73
2^7 = 128 ≥ 73
Следовательно, требуется 7 бит на символ.

3. Найти объем одного сообщения по формуле
Длина идентификатора составляет 32 символа.
Общее количество бит для одного идентификатора:
32 * 7 = 224 бит
Переводим в байты:
224 / 8 = 28 байт

4. Посчитать общий объем памяти, нужный для решения задачи
Необходимо хранить 3840 идентификаторов.
Общий объем памяти в байтах:
3840 * 28 = 107520 байт
Переводим в Кбайт:
107520 / 1024 = 105 Кбайт

При решении задания 11 ЕГЭ по информатике важно:

  1. Точно определить размер алфавита, включая все возможные символы, чтобы правильно вычислить минимальное количество бит на символ с помощью формулы N = 2i.
  2. Необходимо аккуратно переводить биты в байты и последующие единицы измерения, всегда округляя вверх, чтобы обеспечить достаточное пространство для хранения информации.
  3. Следует учитывать дополнительные данные, если они присутствуют в задаче, и суммировать объем памяти для основного идентификатора и дополнительных сведений.
  4. Важно проверять промежуточные результаты и корректно выполнять округления, чтобы избежать ошибок и оптимально использовать выделенный объем памяти.

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

12 задание

12 задание имеет продвинутый уровень сложности. В этой задаче ЕГЭ по информатике составители хотят проверить наше умение исполнить алгоритм для конкретного исполнителя с фиксированным набором команд. Давайте разберёмся с основными терминами и теоретическими знаниями, которые могут понадобиться для понимания задачи.

Алгоритм — это конечный набор точно определённых правил или инструкций, предназначенных для решения определённого класса задач. Эти инструкции описывают последовательность действий, которые должен выполнить исполнитель.

Исполнитель может быть кем или чем угодно: человеком, группой людей, животным, машиной или другим объектом, который способен понимать и выполнять определённые команды.

Существуют три основных типа алгоритмов:

  • Линейные алгоритмы — команды выполняются последовательно, без каких-либо условий.
  • Разветвляющиеся алгоритмы — последовательность действий зависит от выполнения определённых условий.
  • Циклические алгоритмы — некоторые команды повторяются многократно, что называется циклом. При этом повторения выполняются ограниченное количество раз, чтобы алгоритм не зацикливался, нарушая требование результативности.

В циклических алгоритмах важно выделить:

  • Параметр цикла — величину, которая изменяется на каждом шаге и определяет продолжительность выполнения цикла.
  • Начальное и конечное значения параметра цикла** — устанавливают, когда цикл начнётся и закончится.
  • Шаг цикла — на сколько изменяется параметр при каждом повторении.

Циклический алгоритм включает:

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

Циклы бывают с предусловием (условие проверяется перед началом тела цикла) и с постусловием (условие проверяется после выполнения тела цикла).

Способы описания алгоритмов:

  • Символьный — используется специальный язык или символы.
  • Словесный — понятный для исполнителя-человека и применяется, когда команды выполняются в естественном порядке.
  • Графический (блок-схемы) — представляет алгоритм в виде последовательности геометрических фигур, каждая из которых обозначает конкретное действие.

Современные языки программирования обрабатывают разные типы данных:

  1. Числовые — с которыми выполняются алгебраические операции (сложение, вычитание и т.д.).
  2. Логические — для них применяются логические операции (инверсия, дизъюнкция, конъюнкция и т.д.).
  3. Строковые — упорядоченные последовательности символов, используемые для работы с текстом, с возможностью выполнять операции, такие как конкатенация строк, дублирование, поиск и замена подстрок.

Типы задач для исполнителя «Редактор»:

  1. Определение итоговой строки после выполнения команд исполнителя.
  2. Определение начальной строки по известной итоговой строке.
  3. Анализ итоговой строки после выполнения команд (например, подсчёт суммы цифр, проверка делимости, поиск простых чисел).

Способы решения подобных задач:

  • Аналитический
  • Алгебраический
  • С использованием языка программирования Python
  • С помощью электронных таблиц

Вот основные инструменты языка Python:

Цикл while:

Цикл while позволяет выполнять блок кода многократно, пока выполняется определённое условие. Внутри цикла задаётся условие, которое проверяется перед каждым новым повторением. Как только условие перестаёт выполняться, цикл завершается. Например:

Этот код будет выводить значение переменной count, начиная с нуля, пока оно меньше пяти. При каждом повторении count увеличивается на единицу. Когда count достигает 5, цикл останавливается.

Оператор if:

Оператор if проверяет, выполняется ли какое-то условие, и, если оно истинно (то есть True), выполняет блок кода. Это позволяет программе принимать решения на основе условий. Например:

В этом примере, если number больше 5, будет выполнен первый блок, иначе — блок после else.

Метод replace:

Метод replace используется для замены одной подстроки на другую в строке. Это полезно, когда нужно изменить определённые части текста. Например:

Этот код заменит слово «мир» на «Python» в строке text, и результат будет «Привет, Python!».

Метод count:

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

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

Здесь text.count(«hello») подсчитает, сколько раз слово «hello» встречается в строке text. Результат будет 2, так как слово «hello» встречается дважды.

Перейдём к примеру решения прототипов задач:

Разберём задачу №12 ЕГЭ 2025 из демоверсии ФИПИ:

Исполнитель Редактор получает на вход строку цифр и преобразовывает её.
Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
A) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды заменить (111, 27) преобразует строку 05111150 в строку 0527150.
Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку.
Б) нашлось (v).
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется.

Дана программа для Редактора:

НАЧАЛО
ПОКА нашлось (11111) ИЛИ нашлось (888)
ЕСЛИ нашлось (11111)
ТО заменить (11111, 88)
ИНАЧЕ заменить (888, 8)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

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

Решим с помощью программирования:

  1. Открываем наш редактор кода (IDLE или PyCharm), анализируем условие:
    нам дана строка, которой состоит из 81 идущей подряд цифры 1. К этой строке нам нужно применить программу, которая дана в условии, и в ответ записать полученный результат.
  2. Начинаем писать код:
    • Cначала создается строка s (s = 81 * ‘1’), состоящая из 81 символа ‘1’. Эта строка выглядит так: ‘111111111111…111’ (81 раз). Это инициализирует строку, которая будет обрабатываться далее в цикл
    • Потом пишем цикл ПОКА (while ‘11111’ in s or ‘888’ in s:): этот цикл while выполняется до тех пор, пока в строке s встречается либо последовательность ‘11111’, либо последовательность ‘888’. Как только ни одной из этих последовательностей не останется в строке, цикл завершится
    • Дальше оператор ЕСЛИ (if ‘11111’ in s: s = s.replace(‘11111′, ’88’, 1)): внутри цикла while есть проверка: если в строке s найдена последовательность ‘11111’, то она заменяется на ’88’ один раз с помощью метода replace. Метод s.replace(‘11111′, ’88’, 1) находит первое слева вхождение ‘11111’ и заменяет его на ’88’
    • ИНАЧЕ (else: s = s.replace(‘888’, ‘8’, 1)): если в строке не нашлось ‘11111’, выполняется альтернативное действие: первое вхождение последовательности ‘888’ заменяется на ‘8’
    • Когда цикл завершает работу (то есть ни ‘11111’, ни ‘888’ больше не встречаются в строке), выполняется print(s), и программа выводит итоговое значение строки s.

В ответ записываем результат работы программы (881)

Ответ: 881

Важное примечание: функция s.replace(str1, str2, 1) заменяет в строке s подстроку str1 на строку str2 один раз. Если нужно заменить все вхождения подстроки str1, то третий аргумент не пишется.

Посмотрим задание с досрочной волны (I) 2023-го года:

Исполнитель Редактор получает на вход строку цифр и преобразовывает её.

Исполнитель Редактор получает на вход строку, начинающуюся на 3 и содержащую далее n цифр 5 (n > 3).

На выполнение Редактору дана следующая программа:

НАЧАЛО
ПОКА нашлось(25) ИЛИ нашлось(355) ИЛИ нашлось(555)
ЕСЛИ нашлось(25)
ТО заменить(25, 3)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось(355)
ТО заменить(355, 52)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось(555)
ТО заменить(555, 23)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

Найдите минимальное значение n, при котором сумма цифр конечной строки будет равна 27.

Решим с помощью программирования:

  1. Нам дана строка, которая начинается с цифры «3» и далее содержит n цифр «5» (где n > 3). Мы должны применить к этой строке данную программу и определить минимальное значение n, при котором сумма цифр конечной строки будет равна 27
  2. Сначала запускается цикл for, который перебирает значения n от 3 до 99. На каждом шаге создается строка s, начинающаяся с символа «3» и содержащая n цифр «5». Например, если n = 4, строка будет «35555». Эта строка инициализирует начальное состояние, которое будет обрабатываться далее.
  3. Далее идет цикл while, который выполняется, пока в строке s содержится хотя бы одна из подстрок: «25», «355» или «555». Как только этих подстрок больше не останется, цикл завершится. Внутри цикла while выполняется проверка: если в строке s найдена подстрока «25», то она заменяется на «3» один раз. Для этого используется метод replace, который находит первое слева вхождение «25» и заменяет его на «3».
  4. Если подстрока «25» не найдена, проверяется наличие подстроки «355». Если она найдена, строка «355» заменяется на «52» один раз. Опять же используется метод replace, который заменяет первое вхождение «355» на «52». Если ни «25», ни «355» не найдены, проверяется наличие «555». Если эта подстрока присутствует, то «555» заменяется на «23» один раз.
  5. После завершения цикла while (то есть когда в строке больше нет подстрок «25», «355» и «555»), программа вычисляет сумму значений всех цифр в строке s. Для этого мы умножаем количество «2» на 2, количество «3» на 3 и количество «5» на 5, и затем складываем эти произведения. Если итоговая сумма равна 27, программа выводит текущее значение n и завершает выполнение с помощью оператора break.
  6. Таким образом, программа находит и выводит минимальное значение n, при котором сумма цифр конечной строки равна 27.

Ответом на задние будет результат работы этой программы (16)

Ответ: 16

Разберём ещё одно задание:

Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 101 пятерок?

НАЧАЛО
ПОКА нашлось (5555)
заменить (5555, 22)
заменить (222, 5)
КОНЕЦ ПОКА
КОНЕЦ

Решение (Аналитический способ):

  1. Чтобы понять принцип работы алгоритма, рассмотрим цепочку, состоящую из 12 пятерок – 555555555555.
  2. После выполнения первой итерации получаем: 2255555555, была произведена только одна замена, для второй замены не хватает двоек.
  3. После второй итерации получим: 2255555555 -> 22225555 -> 525555
  4. После третьей итерации получаем: 525555 -> 5222 -> 55. Таким образом, после выполнения трех итераций из двенадцати пятерок осталось только две.
    101 : 12 = 8, остаток 5. Таким образом, после применения этих трех итераций 8 раз к цепочке, состоящей из 101 пятерки, останется 8 * 2 + 5 = 21 пятерка.
  5. Далее применяем алгоритм еще 5 раз, получаем:
    555555555555555555555 –> … -> 55555555555 -> 225555555 -> 2222555 -> 52555

Ответ: 52555

Проанализируем следующий прототип задачи:

На вход приведённой ниже программе поступает строка, начинающаяся с символа «>», а затем содержащая 10 цифр 1, 20 цифр 2 и 30 цифр 3, расположенных в произвольном порядке. Определите сумму числовых значений цифр строки, получившейся в результате выполнения программы.

НАЧАЛО
ПОКА нашлось (>1) ИЛИ нашлось (>2) ИЛИ нашлось (>3)
ЕСЛИ нашлось (>1)
ТО заменить (>1, 22>)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось (>2)
ТО заменить (>2, 2>)
КОНЕЦ ЕСЛИ
ЕСЛИ нашлось (>3)
ТО заменить (>3, 1>)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

Решение (Аналитический способ):

  1. Замена «>1» на «22>»: каждая «1» превращается в «22», удваивая количество «2» в строке по сравнению с количеством «1».
  2. Замена «>2» на «2>»: эта замена не изменяет количество «2», оно остается прежним.
  3. Замена «>3» на «1>»: каждая «3» превращается в «1», так что итоговое количество «1» будет равно количеству «3» в исходной строке.
  4. Итоговые количества: количество «1» в финальной строке равно количеству «3» в исходной строке (30). Количество «2» равно количеству «1» в исходной строке, умноженному на 2 (40).
  5. Вычисление суммы: сумма числовых значений: 30 * 1 + 40 * 2 = 110

Ответ: 110

Разберём ещё один прототип:

Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 68 идущих подряд цифр 8? В ответе запишите полученную строку.

НАЧАЛО
ПОКА нашлось (222) ИЛИ нашлось (888)
ЕСЛИ нашлось (222)
ТО заменить (222, 8)
ИНАЧЕ заменить (888, 2)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

Решение (С использованием электронных таблиц):

В ячейку С1 нужно записать исходную строку любым образом. Для экономии времени можно воспользоваться функцией ПОВТОР

Далее нужно определить есть ли в данной строке подстроки “222”и “888”. Для этого можно использовать функцию НАЙТИ. Эта функция выдает ошибку, если подстрока не найдена.

Чтобы правильно обработать ошибку воспользуемся функцией ЕСЛИОШИБКА, которая в случае ошибки выдает 0, а при обнаружении подстроки его позицию. Для каждой подстроки воспользуемся отдельной ячейкой: например, в А2 — “222”, в В2 — “888”.

Теперь нужно построить строку, которая получится после первой итерации. Т.к. в исходной строке двоек нет в ячейке А2 получается 0, а в ячейке В2 – 1. Для этого используем функцию «ЕСЛИ» и вложим в нее функцию «ЗАМЕНИТЬ».

Для получения результата необходимо протянуть диапазон А2:С2 вниз до появления ошибки.

Ответ: 28

Разберём ещё одно задание:

Дана программа для редактора:

НАЧАЛО
ПОКА нашлось (01) ИЛИ нашлось (02) ИЛИ нашлось (03)
заменить (01, 30)
заменить (02, 101)
заменить (03, 202)
КОНЕЦ ПОКА
КОНЕЦ

Известно, что исходная строка начиналась с нуля, а далее содержала только единицы, двойки и тройки. После выполнения данной программы получилась строка, содержащая 20 единиц, 10 двоек и 70 троек. Сколько единиц было в исходной строке?

Решение (Алгебраический способ решения):

  1. Для начала мы разбираемся, сколько цифр 1, 2 и 3 дают строки «01», «02» и «03» после всех замен.
  2. Рассмотрим строку «01». Она превращается в «30», что означает: одна единица дает одну тройку.
  3. Рассмотрим строку «02». Она сначала превращается в «101», а затем — в «130», так как после первой замены появляется «01», к которой можно применить замену еще раз. В итоге одна двойка дает одну единицу и одну тройку.
  4. Рассмотрим строку «03». Она сначала превращается в «202», а затем — в «2130», поскольку после первой замены появляется «02», к которой можно применить замену еще раз. В итоге одна тройка дает одну единицу, одну двойку и одну тройку.
  5. Пусть изначально в строке было X единиц, Y двоек и Z троек. Тогда в результате всех замен:
    • Из X единиц мы получим X троек.
    • Из Y двоек мы получим Y единиц и Y троек.
    • Из Z троек мы получим Z единиц, Z двоек и Z троек.
  6. На основе этого составим систему уравнений:
    • Первое уравнение: Y + Z = 20 (так как в итоге получится 20 единиц).
    • Второе уравнение: Z = 10 (так как в итоге получится 10 двоек).
    • Третье уравнение: X + Y + Z = 70 (так как в итоге получится 70 троек).
  7. Решив эту систему, мы находим, что X = 50, Y = 10, Z = 10.

Ответ: 50

Посмотрим, как решается ещё один подобный пример:

Дана программа для исполнителя Редактор:

НАЧАЛО
ПОКА нашлось (333) ИЛИ нашлось (555)
ЕСЛИ нашлось (555)
ТО заменить (555, 3)
ИНАЧЕ заменить (333, 5)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

Какая строка получится в результате применения приведённой выше программы к строке, состоящей из 65 идущих подряд цифр 5? В ответе запишите полученную строку.

Решение (Аналитический способ решения):

  1. Чтобы понять принцип работы алгоритма, мы рассмотрим цепочку, состоящую из девяти пятерок: 555555555.
  2. После трехкратного выполнения алгоритма эта цепочка сократится до 333, а еще одно применение алгоритма даст одну пятерку.
  3. Таким образом, данный алгоритм преобразует 9 пятерок в одну пятерку.
  4. Разделим 65 на 9: 65 : 9 = 7 с остатком 2, то есть 63 пятерки преобразуются в 7 пятерок, и остаются еще две пятерки. В сумме получается 9 пятерок, которые, согласно пункту 2, преобразуются в одну пятерку.

Ответ: 5.

Приступим к разбору следующего прототипа задачи:

Дана программа для Редактора:

НАЧАЛО
ПОКА нашлось(01) ИЛИ нашлось(02) ИЛИ нашлось(03)
заменить(01, 2302)
заменить(02, 10)
заменить(03, 201)
КОНЕЦ ПОКА
КОНЕЦ

Известно, что исходная строка начиналась с нуля, а далее содержала только единицы, двойки и тройки. После выполнения данной программы получилась строка, содержащая 58 единиц, 23 двойки и 15 троек. Сколько двоек было в исходной строке?

Решение (Алгебраический метод решения):

  1. Для начала разберемся, сколько цифр 1, 2 и 3 дают строки «01», «02» и «03» после всех замен.
  2. Рассмотрим строку «01». Она сначала превращается в «230», а затем — в «2310», так как после первой замены появляется «02», к которой можно применить замену еще раз. Таким образом, «01» дает одну 1, одну 2 и одну 3.
  3. Рассмотрим строку «02». Она превращается в «10», то есть одна «02» дает одну.
  4. Рассмотрим строку «03». Она сначала превращается в «201», а затем — в «22310», поскольку после первой замены появляется «02», к которой можно применить замену еще раз. В итоге «03» дает одну 1, две 2 и одну 3.
  5. Таким образом, мы получаем следующие результаты:
    • «01» дает одну 1, одну 2 и одну 3.
    • «02» дает одну 1.
    • «03» дает одну 1, две 2 и одну 3.
  6. Запишем это в виде системы уравнений:
    • Первое уравнение: X + Y + Z = 58 (количество 1 в итоговой строке).
    • Второе уравнение: X + 2Y = 23 (количество 2 в итоговой строке).
    • Третье уравнение: X + Z = 15 (количество 3 в итоговой строке).
  7. Решив эту систему, мы получаем: X = 7, Y = 43, Z = 8.

Ответ: 43

Рассмотрим ещё одну задачу в рамках этой темы:

Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 69 идущих подряд цифр 8? В ответе запишите полученную строку.

НАЧАЛО
ПОКА нашлось (3333) ИЛИ нашлось (8888)
ЕСЛИ нашлось (3333)
ТО заменить (3333, 88)
ИНАЧЕ заменить (8888, 33)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

Решение (С использованием электронных таблиц):

В ячейку С1 нужно записать исходную строку любым образом. Для экономии времени можно воспользоваться функцией ПОВТОР

Далее нужно определить есть ли в данной строке подстроки “3333”и “8888”. Для этого можно использовать функцию НАЙТИ. Эта функция выдает ошибку, если подстрока не найдена.

Чтобы правильно обработать ошибку воспользуемся функцией ЕСЛИОШИБКА, которая в случае ошибки выдает 0, а при обнаружении подстроки его позицию. Для каждой подстроки воспользуемся отдельной ячейкой: например, в А2 — “3333”, в В2 — “8888”.

Теперь нужно построить строку, которая получится после первой итерации. Т.к. в исходной строке троек нет в ячейке А2 получается 0, а в ячейке В2 – 1. Для этого используем функцию ЕСЛИ и вложим в нее функцию ЗАМЕНИТЬ.

Для получения результата необходимо протянуть диапазон А2:С2 вниз до появления ошибки.

Ответ: 888

Перейдём к следующему примеру для закрепления материала:

Дана программа для исполнителя Редактор:

НАЧАЛО
ПОКА нашлось (222) ИЛИ нашлось (888)
ПОКА нашлось (555)
заменить (555, 8)
КОНЕЦ ПОКА
ЕСЛИ нашлось (222)
ТО заменить (222, 8)
ИНАЧЕ заменить (888, 2)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

Дана строка, состоящая из 21 цифры, причем первые три цифры – двойки, остальные – пятерки. Какая строка получится в результате применения программы к данной строке?

Решение (Аналитический способ решения):

  1. Напомним, что тело цикла «ПОКА» выполняется, пока выполняется условие в этом цикле. Поэтому каждая тройка пятерок в исходной строке заменится на одну восьмерку, и на выходе из цикла получится строка 222888888.
  2. Далее произойдет замена трех двоек на одну восьмерку, в результате чего получим строку 8888888.
  3. Затем применим весь алгоритм два раза, при этом каждая тройка восьмерок заменится на двойку. В итоге получаем строку 228.

Ответ: 228.

Следующий пример:

Дана программа для редактора:

НАЧАЛО
ПОКА НЕ нашлось (00)
заменить (01, 210)
заменить (02, 3101)
заменить (03, 2012)
КОНЕЦ ПОКА
КОНЕЦ

Известно, что исходная строка начиналась с нуля и заканчивалась нулём, а между ними содержала только единицы, двойки и тройки. После выполнения данной программы получилась строка, содержащая 61 единицу, 50 двоек и 18 троек. Сколько цифр было в исходной строке?

Решение (Алгебраический метод):

  1. Для начала разберемся, сколько цифр 1, 2 и 3 дают строки «01», «02» и «03» после всех замен.
  2. Рассмотрим строку «01». Она превращается в «210», то есть одна «01» дает одну 1 и одну 2.
  3. Рассмотрим строку «02». Она сначала превращается в «3101», а затем — в «31210», так как после первой замены появляется «01», к которой можно применить замену еще раз. Таким образом, одна «02» дает две 1, одну 2 и одну 3.
  4. Рассмотрим строку «03». Она сначала превращается в «2012», затем — в «22102», и наконец — в «22131210», так как после каждой замены появляются «02» и «01», к которым можно применить замену еще раз. В итоге одна «03» дает три 1, три 2 и одну 3.
  5. Таким образом, получаем:
    • «01» дает одну 1 и одну 2.
    • «02» дает две 1, одну 2 и одну 3.
    • «03» дает три 1, три 2 и одну 3.
  6. Запишем это в виде системы уравнений:
    • Первое уравнение: X + 2Y + 3Z = 61 (количество 1 в итоговой строке).
    • Второе уравнение: X + Y + 3Z = 50 (количество 2 в итоговой строке).
    • Третье уравнение: Y + Z = 18 (количество 3 в итоговой строке).
  7. Решив эту систему, мы получаем: X = 18, Y = 11, Z = 7.
  8. Затем складываем общее количество единиц, двоек и троек, добавляем два нуля (в начале и в конце строки) и получаем итоговую длину строки: 38.

Ответ: 38

Разберём ещё один прототип:

Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 127 идущих подряд цифр «9»? В ответе запишите полученную строку.

НАЧАЛО
ПОКА нашлось (333) ИЛИ нашлось (999)
ЕСЛИ нашлось (333)
ТО заменить (333, 9)
ИНАЧЕ заменить (999, 3)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

Решение (С использованием электронных таблиц):

В ячейку С1 нужно записать исходную строку любым образом. Для экономии времени можно воспользоваться функцией ПОВТОР

Далее нужно определить есть ли в данной строке подстроки “333” или “999”. Для этого можно использовать функцию НАЙТИ. Эта функция выдает ошибку, если подстрока не найдена.

Чтобы правильно обработать ошибку воспользуемся функцией ЕСЛИОШИБКА, которая в случае ошибки выдает 0, а при обнаружении подстроки его позицию. Для каждой подстроки воспользуемся отдельной ячейкой: например, в А2 — “333”, в В2 — “999”.

Теперь нужно построить строку, которая получится после первой итерации. Т.к. в исходной строке троек нет в ячейке А2 получается 0, а в ячейке В2 – 1. Для этого используем функцию «ЕСЛИ» и вложим в нее функцию «ЗАМЕНИТЬ».

Для получения результата необходимо протянуть диапазон А2:С2 вниз до появления ошибки.

Ответ: 339

Заключительный пример:

Дана программа для исполнителя Редактор:

НАЧАЛО
ПОКА нашлось (888) ИЛИ нашлось (77)
ЕСЛИ нашлось (888)
ТО заменить (888, 8777)
ИНАЧЕ заменить (77,8)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 100 идущих подряд цифр 8.
В ответе через запятую запишите количество цифр 8 и цифр 7, которое будет в конечной строке.

Решение (Аналитический способ):

  1. Проанализировав программу, мы можем сделать вывод, что каждая подстрока «888» будет заменяться на «8777». Подсчитаем, сколько таких замен будет в исходной строке: 100 : 3 = 33 и остаток 1. Будет произведено 33 замены, и в конце останется одна «8».
  2. Затем, поскольку в каждой подстроке «8777» присутствует «77», они будут заменены на «8». В итоге каждая подстрока «888» превращается в «887».
  3. Таким образом, подстрока «888» преобразуется в подстроку «887», и общее количество символов в строке остается неизменным. Было сделано 33 замены, поэтому количество семерок стало 33, а восьмерок осталось 67.

Ответ: 67, 33

Задания на тему «Исполнитель Редактор» в ЕГЭ по информатике требуют хорошего понимания алгоритмов и умения выполнять циклы с условиями и заменами. Эти задачи проверяют навыки последовательного выполнения инструкций и понимания конечного результата работы алгоритма.

Вот несколько ключевых моментов, которые помогут успешно справляться с подобными задачами:

  1. Выучите шаблон кода для подобных задач. Почти все задачи для «Редактора» строятся по одной схеме: строка, состоящая из повторяющихся символов, проходит через цикл замен. Понимание структуры цикла while и операторов if значительно упростит решение.
  2. Запомните базовые операции и методы для строк в Python. Команды, такие как replace (замена подстроки), count (подсчет символов) и условные операторы (if, else), составляют основу программ для таких задач. Умение пользоваться этими методами ускорит вашу работу.
  3. Потренируйтесь решать задачи вручную, прежде чем автоматизировать их с помощью Python. Простой анализ примеров поможет лучше понять логику алгоритма, а затем — убедиться в правильности своего кода. Иногда ручное выполнение 2-3 итераций замен позволяет быстро понять, что происходит с строкой.
  4. Используйте Python для автоматизации и проверки результата. Python идеально подходит для решения таких задач, так как позволяет быстро выполнять замены, циклы и подсчеты. Простой шаблон с использованием for и while поможет вам решать задачи гораздо быстрее.
  5. Запомните порядок операций и избегайте лишних действий. Например, при множественных заменах важно понимать, что сначала выполняются операции в рамках одного условия, а затем переходит к следующему. Сложные замены требуют тщательного контроля над порядком выполнения команд.
  6. Будьте внимательны к условиям задач и проверяйте ответ. Проверяйте, что полученный результат соответствует условиям задачи, особенно если вас просят найти минимальное значение параметра или конечное состояние строки.
  7. Не забывайте о теоретических основах и законах логики. Иногда понимание основ логики и порядков операций позволяет сократить алгоритм и быстрее дойти до результата.

13 задание

Задание 13 в ЕГЭ по информатике относится к категории повышенной сложности. Впервые задачи этого типа были введены в экзамен 2024 года. Оно направлено на проверку навыков работы с масками подсетей.

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

IP-адрес – это уникальный адрес устройства в компьютерной сети, основанной на протоколе TCP/IP. Он состоит из 32 бит (для IPv4) и записывается в десятичном формате, разделённом точками, например, 172.16.168.0.

Маска подсети указывает, какая часть IP-адреса относится к адресу сети (общая для всех устройств в сети), а какая — к адресу конкретного устройства (хоста). Маска также состоит из 32 бит и записывается так же, как IP-адрес, например, 255.255.248.0.

Важно уметь представлять IP-адрес и маску подсети в виде последовательности нулей и единиц (двоичная запись). Например, 255.255.248.0 в двоичном виде: 11111111.11111111.11111000.00000000.

Побитовая конъюнкция (AND) – это операция, применяемая между соответствующими битами IP-адреса и маски подсети. Результатом этой операции является новый адрес, называемый адресом сети. Например:

172.16.168.0 (в двоичном виде) AND 255.255.248.0 (в двоичном виде) = Адрес сети.

Алгоритм применения поразрядной конъюнкции:

1) Представляем числа в двоичном формате.

Каждое число (например, из IP-адреса и маски) записывается в виде последовательности из нулей и единиц.

2) Сравниваем соответствующие разряды (биты) двух чисел.

Для каждой пары битов выполняем следующее правило:

  • Если оба бита равны 1 → результат 1.
  • Если хотя бы один из битов равен 0 → результат 0.

3) Делаем это по каждому разряду.

Двигаемся слева направо, сравнивая разряды одного числа с разрядами другого.

4) Собираем результат.

Получаем новую двоичную последовательность, которая является результатом применения конъюнкции.

Количество устройств, которые могут быть подключены к сети, зависит от числа бит, отведённых для хостов. Это вычисляется как 2k, где k — количество нулей в маске подсети. Например, если в маске 13 нулей, то сеть может содержать 213 = 8192 IP-адресов.

Для программного способа решения задачи нам нужно знать некоторые функции и библиотеки языка Python:

1) Модуль ipaddress предоставляет инструменты для работы с IP-адресами (IPv4 и IPv6), подсетями, сетевыми интерфейсами и связанными операциями. Этот модуль позволяет работать с адресами и сетями на высоком уровне, без необходимости писать низкоуровневые операции.

Основные возможности ipaddress:

Работа с IP-адресами:

  • Поддерживает как IPv4, так и IPv6 адреса.
  • Позволяет конвертировать IP-адреса в различные форматы (двоичный, строковый и т.д.).
  • Проверяет валидность IP-адресов.

Работа с подсетями:

  • Позволяет определять диапазоны адресов в сети.
  • Поддерживает вычисления на основе маски подсети.
  • Упрощает работу с IP-адресами внутри подсети.

Анализ и сравнение адресов

  • Поддержка операций сравнения (==, !=, >, <).
  • Проверка принадлежности IP-адреса сети.

2) ip_network:

Эта функция из модуля ipaddress создаёт объект сети на основе переданного IP-адреса и маски.

Она принимает строку, где указаны IP-адрес и маска (либо в формате префикса, либо в формате полного IP и маски).

Возвращает объект, который позволяет работать с сетью: перебирать IP-адреса, получать адрес сети и широковещательный адрес.

3) Цикл while позволяет выполнять блок кода многократно, пока выполняется определённое условие. Внутри цикла задаётся условие, которое проверяется перед каждым новым повторением. Как только условие перестаёт выполняться, цикл завершается. Например:

Этот код будет выводить значение переменной count, начиная с нуля, пока оно меньше пяти. При каждом повторении count увеличивается на
единицу. Когда count достигает 5, цикл останавливается.

4) Оператор if проверяет, выполняется ли какое-то условие, и, если оно истинно (то есть True), выполняет блок кода. Это позволяет программе принимать решения на основе условий. Например:

В этом примере, если number больше 5, будет выполнен первый блок, иначе — блок после else

5) В Python метод count используется для подсчёта количества вхождений определённого элемента (например, символа или подстроки) в строке или списка. Он возвращает целое число, которое показывает, сколько раз искомый элемент встречается в данной строке или списке.

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

Здесь text.count(«hello») подсчитает, сколько раз слово «hello» встречается в строке text. Результат будет 2, так как слово «hello» встречается дважды.

Перейдём к примеру решения прототипов задач:

Разберём задачу №13 ЕГЭ 2025 из демоверсии ФИПИ:

В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Сеть задана IP-адресом 172.16.168.0 и маской сети 255.255.248.0.

Сколько в этой сети IP-адресов, для которых количество единиц в двоичной записи IP-адреса не кратно 5?

В ответе укажите только число.

Решение с помощью программирования:

1. Открываем нашу среду разработки и анализируем задачу: нам нужно применить к IP-адресу сети маску и понять, сколько в этой сети IP-адресов, для которых количество единиц в двоичной записи IP-адреса не кратно 5.

2. Мы подключаем библиотеку ipaddress, которая позволяет работать с сетями и IP-адресами. С её помощью можно создавать сети, перечислять IP-адреса и выполнять различные операции (from ipaddress import *)

3. С помощью функции ip_network мы создаём объект сети. Здесь указываются: базовый IP-адрес сети: 172.16.168.0, маска сети: 255.255.248.0 (net = ip_network(‘172.16.168.0/255.255.248.0′)). Модуль автоматически рассчитывает диапазон IP-адресов, которые входят в эту сеть, исходя из маски.

4. Счётчик count будет использоваться для подсчёта тех IP-адресов, у которых количество единиц в двоичной записи не делится на 5 (count = 0)

5. Мы проходим по каждому IP-адресу в сети net. Это позволяет автоматически перебрать все IP-адреса, начиная с базового адреса и заканчивая широковещательным адресом сети (for ip in net:)

6. Используя форматирование f'{ip:b}’, переводим IP-адрес в строку, представляющую его двоичную запись. Например, IP-адрес 172.16.168.0 в двоичном виде будет выглядеть как 10101100.00010000.10101000.00000000 (b = f'{ip:b}’)

7. С помощью метода .count(‘1’) мы подсчитываем количество единиц в двоичной записи адреса. Если это количество делится на 5 с остатком, т.е. остаток не равен нулю (% 5 != 0), значит, текущий адрес удовлетворяет условиям задачи (if b.count(‘1’) % 5 != 0:)

8. Если условие выполнено, увеличиваем значение счётчика на 1 (count += 1)

9. После завершения перебора всех IP-адресов в сети выводим общее количество подходящих адресов (print(count))

10. Результат работы программы и будет являться ответом на нашу задачу:

Ответ: 1663

 

Теперь посмотрим задание с досрочной волны 2024:

В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске.Сеть задана IP-адресом 105.224.200.224 и сетевой маской 255.255.255.224. Сколько в этой сети IP-адресов, для которых количество единиц в двоичной записи IP-адреса кратно 4? В ответе укажите только число.

Решение с помощью аналитики (с небольшим использованием программирования):

1. Анализируем условие: нам дан IP-адрес и маска сети. Мы хотим определить, сколько IP-адресов в этой сети имеют определённое свойство — количество единиц в двоичной записи должно соответствовать заданному условию (в нашем случае — быть кратным 4).

2. Для начала выписываем IP-адрес и маску сети: каждое число в IP-адресе и маске занимает 1 байт (8 бит). Преобразуем IP-адрес и маску в двоичный формат. Для этого можно воспользоваться калькулятором в режиме «Программист»:

  • IP-адрес: 105.224.200.224 → 01101001.11100000.11001000.11100000
  • Маска: 255.255.255.224 → 11111111.11111111.11111111.11100000

3. Важно: если число в двоичной записи содержит менее 8 разрядов, его нужно дополнить нулями слева так, чтобы получилось ровно 8 разрядов. Например, число 5, которое в двоичном виде записывается как 101, будет представлено как 00000101.

4. Применяем поразрядную конъюнкцию к заданному адресу узла и его маске, получаем: 01101001.11100000.11001000.11100000 (нашли адрес сети)

5. Те биты IP-адреса, которые находятся над единицами в маске, являются неизменными. В нашем случае неизменная часть — это первые 29 бит IP-адреса: 01101001.11100000.11001000.111

6. Переменная часть IP-адреса — это биты, которые находятся под нулями маски. В данном случае переменной частью являются последние 5 битов:
00000

7. Количество переменных бит равно количеству нулей в маске. У нас их 5. Считаем единицы для каждого IP-адреса: для каждого IP-адреса в сети суммируем количество единиц в неизменной части и количество единиц в переменной части. Считаем, сколько единиц получается в каждом IP-адресе. Оставляем только те комбинации, для которых сумма единиц соответствует условию (кратна 4).

8. В коде мы перебираем все возможные значения для пяти переменных бит. К неизменной части IP-адреса (13 единиц) прибавляем количество единиц в текущей комбинации переменной части. Проверяем, делится ли сумма на 4. Если да, то увеличиваем счётчик.

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

Ответ: 10

 

Основная волна 07.06.2024:

В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети.

Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети.

Сеть задана IP-адресом 172.16.128.0 и маской сети 255.255.192.0.Сколько в этой сети IP-адресов, для которых количество единиц в двоичной записи IP-адреса не кратно 2?

В ответе укажите только число.

Решение с помощью шаблонного кода:

1. Выделим основные моменты, которые нам нужны для написания кода:

  • IP-адрес сети: 172.16.128.0;
  • Маска сети: 255.255.192.0;
  • Количество единиц в двоичной записи IP-адреса не кратно 2

2. Пишем код:


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

Ответ: 8192

 

Основная волна 08.06.2024:

В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске.

Сеть задана IP-адресом 112.160.0.0 и сетевой маской 255.240.0.0.

Сколько в этой сети IP-адресов, для которых количество единиц в двоичной записи IP-адреса не кратно 3?

В ответе укажите только число.

Решение с помощью программирования:

1.    Выделим основные моменты, которые нам нужны для написания кода:

  • IP-адрес сети: 112.160.0.0;
  • Маска сети: 255.240.0.0;
  • Количество единиц в двоичной записи IP-адреса не кратно 3

2. Пишем код:

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

Ответ: 699050

 

Разберём задачу №13 ЕГЭ 2025 из варианта основной волн 19.06.2024 (Центр):

В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Сеть задана IP-адресом 112.160.0.0 и маской сети 255.240.0.0.

Сколько в этой сети IP-адресов, для которых количество единиц в двоичной записи IP-адреса кратно 5?

В ответе укажите только число.

Решение с помощью шаблонного кода:

1.  Выделим основные моменты, которые нам нужны для написания кода:

  • IP-адрес сети: 112.160.0.0;
  • Маска сети: 255.240.0.0.;
  • Количество единиц в двоичной записи IP-адреса кратно 5

2.  Пишем код:

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

Ответ: 215766

 

Ну и для закрепления материала посмотрим основную волну 04.07.2024:

В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске.

Сеть задана IP-адресом 115.192.0.0 и сетевой маской 255.192.0.0.

Сколько в этой сети IP-адресов, для которых количество единиц в двоичной записи IP-адреса не кратно 3?

В ответе укажите только число.

Решение с помощью шаблонного кода:

1. Выделим основные моменты, которые нам нужны для написания кода:

  • IP-адрес сети: 115.192.0.0;
  • Маска сети: 255.192.0.0;
  • Количество единиц в двоичной записи IP-адреса не кратно 3

2. Пишем код:


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

Ответ: 2796202

 

Сейчас посмотрим прототипы задач, которые были на этой позиции в 2023м году. Досрочная волна 2023(I):

На рисунке представлена схема дорог, связывающих города A, Б, В, Г, Д, Е, Ж, З, И, К, Л, М. По каждой дороге можно двигаться только в одном направлении, указанном стрелкой.

Определите количество различных путей, которые начинаются в городе A и заканчиваются в городе M.

Решение:

1. Такие задачи решались очень легко: вся суть решения заключалась в том, чтобы считать количество путей в каждый город. Как это делать?

  • Мы начинаем из пункта А (в него как-бы существует 0 путей)
  • Дальше идём в пункт Б (в него мы можем попасть только из пункта А, то есть существует один путь).
  • В путь В мы уже можем попасть из двух пунктов: А и Б, тогда количество путей для него будет равно 2
  • В город Г ведут две стрелочки, значит количество путей в него является суммой различных путей в города Б и В (1 + 2 = 3)

2. Так мы продолжаем, пока не дойдем до нужного города (по условию М).

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

Ответ: 66

 

Разберём задачу №13 ЕГЭ 2023 из основной волны (III):

На рисунке представлена схема дорог, связывающих города A, Б, В, Г, Д, Е, Ж, З, И, К, Л, М. По каждой дороге можно двигаться только в одном направлении, указанном стрелкой.

Сколько существует различных путей из города A в город M, проходящих через город K?

Решение:

1.    Аналогично предыдущему заданию переносим рисунок в Paint и считаем количество различных путей для каждого города. Но по условию нам нужно чтобы путь проходил через город К, значит пункт Л и дорогу из И в М можно просто вычеркнуть из схемы (если мы пойдем через них, то город К не будет задействован):

Ответ: 20

 

Задание №13 в ЕГЭ по информатике проверяет ваши знания о сетях TCP/IP и навыки работы с масками подсетей. Оно направлено на развитие аналитического мышления и умения программно обрабатывать IP-адреса. Для успешного выполнения задания важно понимать теорию сетей, уметь преобразовывать адреса и маски в двоичный вид, а также пользоваться базовыми инструментами программирования.

Лайфхаки и советы

1. Визуализация помогает.

Записывайте IP-адрес и маску на бумаге в двоичном виде, подчёркивая неизменные и изменяемые части. Это даёт ясное представление о задаче.

2. Используйте калькулятор в режиме «Программист».

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

3. Анализ условий задачи.

Уточните, что требуется: подсчитать адреса, кратные какому-либо числу, или исключить определённые адреса. Это определит структуру вашего решения.

4. Шаблон кода для Python.

Запомните базовый шаблон для работы с ipaddress. Например:

Следуя этим рекомендациям, вы сможете уверенно решать задания на IP-адресацию, избегая распространённых ошибок. Помните, что внимательное чтение условия задачи и чёткое понимание алгоритма решения — ключ к успеху. Используйте программирование, чтобы сэкономить время на экзамене.

14 задание

Задание 14 в ЕГЭ по информатике относится к заданиям повышенной сложности. Оно проверяет наше знание позиционных систем счисления. Разберем ключевые термины и теорию, которые важны для понимания и успешного выполнения этого задания.

Система счисления — это способ представления чисел с помощью ограниченного набора символов. В разных системах счисления используются разные основания (например, 2, 10, 16), которые определяют, сколько уникальных цифр можно использовать. В привычной для нас десятичной системе (основание 10) используются цифры от 0 до 9. В двоичной системе (основание 2) — только 0 и 1. Основание системы счисления также определяет, какую степень этого основания принимает каждая позиция числа, и чем дальше цифра расположена слева, тем большую «весомость» она имеет.

Операнды — это значения или переменные, над которыми выполняются операции в математическом или программном выражении. Например, в выражении 5 + 3, где выполняется операция сложения, числа 5 и 3 являются операндами. Операнды могут быть числами, переменными или даже более сложными выражениями, которые участвуют в вычислениях, таких как сложение, вычитание, умножение и деление.

Полиномы — это математические выражения, состоящие из суммы нескольких членов, каждый из которых представляет собой число (коэффициент), умноженное на переменную в определенной степени. Например, 3x^2 + 2x + 5 — это полином, где каждый член (например, 3x^2, 2x, и 5) состоит из коэффициента и степени переменной x. Полиномы часто используются для описания различных зависимостей и функций, и их степень определяется наибольшей степенью переменной.

Популярные системы счисления:

Десятичная система:

  • Самая распространенная система счисления с основанием 10, использующая цифры от 0 до 9.
  • Когда прибавляем к 9 (наибольшей цифре) единицу, пишем 0 и добавляем следующий разряд, получая 10.
  • Понимание этой логики упрощает изучение других систем счисления.

Двоичная система:

  • Имеет основание 2 и состоит из цифр 0 и 1.
  • При сложении 1 + 1 получаем 10, переходя на следующий разряд.
  • Примеры сопоставления с десятичной системой:

1 = 1, 2 = 10, 3 = 11, 4 = 100, и так далее.

Восьмеричная система:

  • Основание 8, цифры от 0 до 7.
  • Примеры перевода из десятичной: 5 = 5, 8 = 10, 9 = 11, 12 = 14.

Шестнадцатеричная система:

  • Основание 16, цифры от 0 до F (A = 10, B = 11, …, F = 15).
  • Примеры перевода из десятичной: 8 = 8, 10 = A, 15 = F, 16 = 10.

Перевод чисел из десятичной системы в другие системы счисления:

Чтобы перевести число из десятичной системы в другую (например, в двоичную, восьмеричную или шестнадцатеричную), используем деление на основание новой системы:

1) Делим число на основание новой системы.
2) Записываем остаток.
3) Продолжаем деление частного на основание, пока частное не станет равно 0.
4) Остатки записываем в обратном порядке для получения результата.

Примеры перевода:

Перевод числа 25 в двоичную систему:

1) 25 ÷ 2 = 12 (остаток 1)
2) 12 ÷ 2 = 6 (остаток 0)
3) 6 ÷ 2 = 3 (остаток 0)
4) 3 ÷ 2 = 1 (остаток 1)
5) 1 ÷ 2 = 0 (остаток 1)

Ответ: 11001

Перевод числа 123 в восьмеричную систему:

1) 123 ÷ 8 = 15 (остаток 3)
2) 15 ÷ 8 = 1 (остаток 7)
3) 1 ÷ 8 = 0 (остаток 1)

Ответ: 173

Перевод числа 241 в шестнадцатеричную систему:

1) 241 ÷ 16 = 15 (остаток 1)
2) 15 ÷ 16 = 0 (остаток F)

Ответ: F1

Перевод чисел из других систем счисления в десятичную:

Чтобы перевести число из другой системы счисления в десятичную, используем степени основания исходной системы:

1) Определяем разряд каждой цифры (это степень основания системы).
2) Умножаем каждую цифру на основание в степени, соответствующей её разряду.
3) Складываем все произведения.

Примеры перевода:

Переведем число 1101 из двоичной системы в десятичную.

1.    Запишем число и под каждой цифрой укажем ее разряд (степень двойки):
1   1   0   1
3   2   1   0

2.    Умножим каждую цифру 1101 на 2 в степени, соответствующей ее разряду:
1 * 23 = 1 * 8 = 8
1 * 22 = 1 * 4 = 4
0 * 21 = 0 * 2 = 0
1 * 20 = 1 * 1 = 1

3.    Сложим все полученные произведения:
8 + 4 + 0 + 1 = 13

Получим, что 1101 в двоичной системе = 13 в десятичной

Переведем число 372 из восьмеричной системы в десятичную.

1.  Запишем число и под каждой цифрой укажем ее разряд (степень восьмерки):
3   7   2
2   1   0

2.  Умножим каждую цифру на 8 в степени, соответствующей ее разряду:
3 * 82 = 3 * 64 = 192
7 * 81 = 7 * 8 = 56
2 * 80 = 2 * 1 = 2

3.  Сложим все полученные произведения:
192 + 56 + 2 = 250

Получим, что 372 в восьмеричной системе = 250 в десятичной

Переведем число A3F из шестнадцатеричной системы в десятичную.

1. Запишем число и под каждой цифрой укажем ее разряд (степень шестнадцати):
A   3   F
2   1   0

2. Умножим каждую цифру на 16 в степени, соответствующей ее разряду:
A (10) * 162 = 10 * 256 = 2560
3 * 161 = 3 * 16 = 48
F (15) * 160 = 15 * 1 = 15

3. Сложим все полученные произведения:
o    2560 + 48 + 15 = 2623

A3F в шестнадцатеричной = 2623 в десятичной

Системы счисления с различными основаниями имеют свои правила, но основные принципы перевода между системами остаются одинаковыми.

Чтобы перевести число из десятичной системы счисления в двоичную, восьмеричную и шестнадцатеричную используются функции bin(), oct() и hex() соответственно.

Функции bin(), oct() и hex() возвращают числа в виде строк, где первые два символа указывают на систему счисления (например, 0b для двоичной, 0o для восьмеричной, 0x для шестнадцатеричной). Эти символы нам не нужны, поэтому мы можем убрать их с помощью среза. Чтобы это сделать, после функции добавляем квадратные скобки с [2:], что означает, что новая строка начнется с символа под индексом 2 (так как в программировании индексация начинается с 0).

Если в задаче просят переводить в какую-то другую систему, придется писать собственный алгоритм перевода:

num – исходное число в десятичной системе
base – основание системы, в которую хотим перевести

Пока наше число num больше 0, мы добавляем в переменную result остаток от деления этого числа на основание, а затем делим его нацело на основание. В конце используем [:: -1], чтобы развернуть строку result, так как числа добавлялись в обратном порядке.

Однако, если нужно перевести число в систему с основанием больше 10, этот алгоритм не подойдет, поэтому давайте его доработаем:

Мы добавили строку digits со всеми возможными символами. Теперь мы добавляем в переменную result не остаток, а элемент из строки digits под индексом остатка. Так, если остаток будет равен 11, мы добавим не ‘11’, а элемент под индексом 11 из строки digits – ‘B’.

Чтобы перевести из любой системы счисления в десятичную, достаточно написать функцию int() и добавить в качестве второго аргумента номер системы, из который мы переводим число

Также для некоторых прототипов задач нам может понадобиться алгоритм представления числа в некоторой системе счисления в виде полинома:

Алгоритм представления числа в системе счисления с основанием b в виде полинома состоит из нескольких шагов. Этот алгоритм применим для любой системы счисления (например, двоичной, десятичной, шестнадцатеричной), и позволяет разложить число по степеням основания.

Шаги алгоритма

1.    Нумерация индексов:

  • Запишем число и пронумеруем его цифры, начиная справа налево, начиная с нуля. Индекс 0 соответствует самой правой цифре, индекс 1 — следующей слева, и так далее
  • Например, для числа 12345b​ (в системе счисления с основанием b):
  • Цифра 5 имеет индекс 0.
  • Цифра 4 имеет индекс 1.
  • Цифра 3 имеет индекс 2.
  • Цифра 2 имеет индекс 3.
  • Цифра 1 имеет индекс 4.

2.    Представление каждой цифры как члена полинома:

  • Каждую цифру числа умножаем на основание системы в степени, равной её индексу.
  • Например, для числа 12345b​:
  • Цифра 5 с индексом 0 представляется как 5 * b0.
  • Цифра 4 с индексом 1 представляется как 4 * b1.
  • Цифра 3 с индексом 2 представляется как 3 * b2.
  • Цифра 2 с индексом 3 представляется как 2 * b3.
  • Цифра 1 с индексом 4 представляется как 1 * b4.

3.    Суммирование всех членов:

  • Складываем все члены, полученные на предыдущем шаге, чтобы получить полиномиальное представление числа.
  • Для числа 12345b​ это будет: 1 * b4 + 2 * b3 + 3 * b2 + 4 * b1 + 5 * b0

4.    Запись итогового полинома:

  • Записываем полученное выражение как полином. В этом полиноме каждая цифра числа представлена как коэффициент, а её позиция — как степень основания b.
  • В нашем примере полином для числа 12345b​ будет: 1 * b4 + 2 * b3 + 3 * b2 + 4 * b1 + 5 * b0

Перейдём к примеру решения прототипов задач:

 

Разберём задачу №14 ЕГЭ 2025 из демоверсии ФИПИ:

Операнды арифметического выражения записаны в системе счисления с основанием 19.

98897×2119 + 2×92319

В записи чисел переменной x обозначена неизвестная цифра из алфавита 19-ричной системы счисления. Определите наибольшее значение x, при котором значение данного арифметического выражения кратно 18.

Для найденного x вычислите частное от деления значения арифметического выражения на 18 и укажите его в ответе в десятичной системе счисления.

Основание системы счисления указывать не нужно.

Решение с помощью программирования:

1.    Открываем наш редактор кода (IDLE или PyCharm), анализируем условие: нам дано арифметическое выражение, в записи которого неизвестна одна цифра из алфавита 19-ричной системы счисления.

2.    Начинаем писать программу:

Определяем цифры 19-ричной системы счисления:

  • Сначала мы записываем в переменную digits все возможные цифры 19-ричной системы, которая включает 10 цифр (от 0 до 9) и 9 букв английского алфавита (от A до I).
  • Проблема может возникнуть, если мы не помним порядок букв в алфавите. Чтобы обойти это, мы используем знание, что максимальная цифра в любой системе счисления всегда на единицу меньше основания системы.
  • Также нам поможет функция int, которая переводит строку из указанной системы счисления в десятичную. Например, если мы вводим int(«I», 19), функция вернет 18 — так мы можем проверить, что I — это последняя цифра в 19-ричной системе.

3.    Затем, для удобства, мы выводим заголовок print(«x quotient»), чтобы таблица получилась нагляднее. Напоминаем, что слово «quotient» на английском означает «частное» или «результат деления».

4.    С помощью цикла for x in digits мы перебираем все символы-цифры из строки digits, поочередно присваивая их переменной x. Это называется «итерацией по строке», так как мы обходим каждый символ строки digits.

5.    Внутри цикла мы объединяем числа 98897×21 и 2×923, используя текущее значение x, и переводим их в десятичную систему с помощью функции int. Для этого используем выражение: s = int(«98897» + x + «21», 19) + int(«2» + x + «923», 19). В первом аргументе int записана строка, представляющая число в 19-ричной системе, а второй аргумент (19) указывает основание системы, из которой мы переводим в десятичную.

6.    Важный момент: функция int поддерживает системы счисления только до основания 36. Если нам понадобится система с большим основанием, мы будем представлять числа как полиномы и переводить их вручную.

7.    Ручное преобразование с помощью полиномов:

Для систем с основанием больше 36 мы можем записать выражение в виде полинома, где каждая цифра умножается на степень основания.

Пример такого представления: s = (9*19**7 + 8*19**6 + 8*19**5 + 9*19**4 + 7*19**3 + x*19**2 + 2*19 + 1) + (2*19**4 + x*19**3 + 9*19**2 + 2*19 + 3).

При этом переменная x принимает значения от 0 до 18 с помощью for x in range(19), что представляет 19-ричные цифры как их десятичные эквиваленты (подробный алгоритм описан в теории).

8.    После получения суммы s мы проверяем, делится ли она на 18. Если делится, то выводим значение x и частное от деления на 18: if s % 18 == 0:

print(x, s // 18). В задаче нужно найти частное для наибольшего значения x, поэтому в качестве ответа мы выбираем последнее подходящее частное.

Ответ: 469034148

 

Разберём второй прототип задачи №14 ЕГЭ 2025 из демоверсии ФИПИ:

Значение арифметического выражения

3 * 31258 + 2 * 6257 – 4 * 6256 + 3 * 1255 – 2 * 254 − 2024

записали в системе счисления с основанием 25. Сколько значащих нулей содержится в этой записи?

Решение с помощью языка Python:

1.    Открываем наш редактор кода (IDLE или PyCharm), анализируем условие: нам дано арифметическое выражение, которое записали в системе счисления с основанием 25.

2.    Вычисляем значение выражения:

Сначала мы используем длинную арифметику Python, которая позволяет работать с большими числами. Мы записываем значение выражения в переменную number:
number = 3 * 3125**8 + 2 * 625**7 — 4 * 625**6 + 3 * 125**5 — 2 * 25**4 — 2024

Это выражение хранит результат, который мы будем анализировать в 25-ричной системе счисления.

3.    Инициализируем счётчик нулей:

Создаем переменную cnt и устанавливаем её значение равным нулю: cnt = 0. Этот счётчик будет подсчитывать количество нулей в числе number, когда оно представлено в 25-ричной системе.

4.    Извлекаем цифры числа в 25-ричной системе счисления:

Переходим к циклу while, который будет выполняться, пока значение number больше нуля. В этом цикле мы будем получать каждую цифру числа number в 25-ричной системе: while number > 0:

5.    Внутри цикла проверяем, равна ли последняя цифра числа нулю. Для этого используем условие if number % 25 == 0. Если условие выполняется, увеличиваем счётчик cnt на единицу:

if number % 25 == 0:
cnt += 1

6.    После проверки и обновления счётчика мы целочисленно делим number на 25. Это позволяет нам перейти к следующей цифре в 25-ричной системе: number //= 25

7.    Таким образом, по завершении цикла while в переменной cnt будет храниться количество нулей в числе number, записанном в 25-ричной системе счисления. Это значение и будет ответом на задачу, выводим его: print(cnt)

Ответ: 9

 

Дальше посмотрим задание №14 из досрочной волны 2024го года:

Определите в 27-ричной записи числа количество цифр с числовым значением, превышающим 9:

3 * 21872020 + 3 * 7292021 – 2 * 812022 + 272023 – 4 * 32024−2029

Решим с помощью программирования:

1.    Читаем условие, понимаем, что от нас хотят: нам нужно перевести выражение из условия в 27-ричную систему счисления и понять, сколько в нём будет цифр, больших 9.

2.    Начинаем писать код: сначала переписываем наше выражение в переменную number (number = 3 * 2187**2020 + 3 * 729**2021 — 2 * 81**2022 + 27**2023 — 4 * 3**2024 — 2029)

3.    Устанавливаем счётчик для цифр больше 9:

Создаем переменную count и присваиваем ей значение 0 (count
= 0). Этот счётчик будет использоваться для подсчета количества цифр, которые больше 9, в числе number, когда оно переведено в 27-ричную систему.

4.    Перевод в 27-ричную систему: используем цикл while, который находит каждую цифру числа в 27-ричной системе, деля number на 27 и сохраняя остаток в digit.

5.    Если цифра digit больше 9, увеличиваем счётчик count.

6.    По окончании цикла в count будет количество цифр в 27-ричной записи, которые больше 9. Это и будет ответом на нашу задачу.

Ответ: 3368

 

Следующий прототип задачи из основной волны(I) 2023:

Операнды арифметического выражения записаны в системе счисления с основанием 19:

98×7964119 + 36×1419 + 73×419

В записи чисел переменной x обозначена неизвестная цифра из алфавита 19-ричной системы счисления. Определите наибольшее значение x, при котором значение данного арифметического выражения кратно 18. Для найденного значения x вычислите частное от деления значения арифметического выражения на 18 и укажите его в ответе в десятичной системе счисления. Основание системы счисления указывать не нужно.

Решение с помощью электронных таблиц:

1.    Решим задание с помощью перебора всех возможных значений x, то есть от 0 до 18 (т.к. система счисления 19)

2.    Представим наши числа 98×79641119, 36×14119 и 73×419   в виде полиномов (подробный алгоритм описан в блоке теории):

  • 98×7964119  = 9 * 197 + 8 * 196 + x * 195 + 7 * 194 + 9 * 193 + 6 * 192 + 4 * 191 + 1 * 190  
  • 36×1419 = 3 * 194 + 6 * 193 + x * 192 + 1 * 191 + 4 * 190
  • 73×419 = 7 * 193 + 3 * 192 + x * 191 + 4 * 190

3.    Открываем наши электронные таблицы, в первом столбце запишем все возможные десятичные представления цифр (для 19-ричной системы счисления – числа от 0 до 18); во втором столбце запишем выражение из условия (x заменяем на ссылку на соответственную ячейку в первом столбце, например, для первой ячейки =9*19^7 + 8*19^6 + A1*19^5 + 7*19^4 + 9*19^3 + 6*19^2 + 4*19^1 + 1 + 3*19^4 + 6*19^3 + A1*19^2 + 1*19^1 + 1 + 7*19^3 + 3*19^2 + A1*19 + 4), а в третьем столбце – остаток от искомого частного (например, =ОСТАТ(B2;18)):

4.    Нужно заметить, что символ ^ во многих языках программирования обозначает операцию побитового исключающего или, в том числе и в Python, поэтому эту операцию нельзя использовать как замену операции ** в Python. Также заметим, что операция возведения в степень является более приоритетной, чем операция умножения, поэтому операцию возведения в степень при решении данной задачи не нужно заключать в скобки.

Для вычисления значений выражения и частного были использованы следующие формулы:

5.    Вспоминаем, что нам нужно найти по условию: наибольшее значение x, при котором значение данного арифметического выражения кратно 18, то есть нам нужно найти наибольший x, при котором значение в правом столбце равно 0: это 18 (в условии сказано: для найденного значения x вычислите частное от деления значения арифметического выражения на 18 и укажите его в ответе в десятичной системе счисления):

Ответ: 470402599

 

Посмотрим вариант из основной волны 19.06.2024 (Центр):

Значение арифметического выражения 6260 + 6160 + 660 − x, где x – целое положительное число, не превышающее 2030, записали в 6-ричной системе счисления. Определите наименьшее значение x, при котором количество нулей в 6-ричной записи числа, являющегося значением данного арифметического выражения, равно 202.

В ответе запишите число в десятичной системе счисления.

Решение на Python:

1.    Инициализируем цикл для перебора значений x: мы начинаем с x = 0 и перебираем все значения до 2030 включительно с помощью for x in range(0, 2031). Это позволяет нам последовательно проверять все допустимые значения x.

2.    Вычисляем значение выражения: для каждого значения x мы вычисляем значение выражения 6260 + 6160 + 660 − x и сохраняем его в переменной s. Это выражение представляет наше целевое число, которое мы будем анализировать в 6-ричной системе.

3.    Подсчитываем количество нулей в 6-ричной записи: мы создаем переменную count и устанавливаем её в 0, чтобы отслеживать количество нулей. Затем, с помощью цикла while s > 0, мы переводим число s в 6-ричную систему, вычисляя остаток от деления на 6 (это последняя цифра в 6-ричной записи). Если эта цифра равна 0, мы увеличиваем count на 1. После этого делим s на 6, чтобы перейти к следующей цифре.

4.    Проверяем условие задачи: после завершения перевода числа в 6-ричную систему и подсчета нулей, мы проверяем, равно ли количество нулей 202. Если это условие выполняется, мы нашли наименьшее значение x, которое нам нужно.

5.    Выводим результат и прерываем цикл: если условие выполняется, мы выводим текущее значение x с помощью print(x) и прерываем выполнение цикла с помощью break, так как нам нужно только первое найденное значение x, которое соответствует условию задачи.

Ответ: 216

 

Досрочная волна(II) 2023-го года:

Операнды арифметического выражения записаны в системе счисления с основанием 15.

97968×1515 + 7×23315

В записи чисел переменной x обозначена неизвестная цифра из алфавита 15-ричной системы счисления. Определите наименьшее значение x, при котором значение данного арифметического выражения кратно 14. Для найденного значения x вычислите частное от деления значения арифметического выражения на 14 и укажите его в ответе в десятичной системе счисления. Основание системы счисления в ответе указывать не нужно.

Решение программированием:

1.    Задаем диапазон для переменной x:Мы перебираем все возможные значения x, которые могут принимать значения от 0 до 14 в 15-ричной системе счисления.

2.    Записываем арифметическое выражение:Выражение имеет вид ​97968×1515 + 7×23315. Мы интерпретируем числа, подставляя текущие значения x, и преобразуем их в десятичную систему для дальнейших вычислений.

3.    Вычисляем значение выражения:Сначала формируем числа с учетом текущего значения x, затем суммируем их.

4.    Проверяем кратность 14:Проверяем, делится ли получившееся значение выражения на 14 без остатка.

5.    Находим частное:Если значение выражения кратно 14, мы вычисляем частное от деления и выводим результат вместе с текущим значением x.

6.    Завершаем цикл:После нахождения первого подходящего значения x, удовлетворяющего условию, мы завершаем перебор.

Ответ: 116071912

 

Следующее задание из варианта с досрочной волны 2022:

Результат выражения

3 * 162018 − 2 * 81028 − 3 * 41100 − 21050 − 2022

записали в 4-ричной системе счисления. Сколько троек в полученной записи?

Решение на языке Python:

  1.    Записываем выражение:

Мы задаем выражение 3 * 162018 − 2 * 81028 − 3 * 41100 − 21050 – 2022 и сохраняем его результат в переменной f.

2.    Инициализируем счетчик троек:

Создаем переменную count_threes для подсчета количества цифр 3 в 4-ричной записи числа.

3.    Преобразуем число в 4-ричную систему:

Используя цикл, мы делим число на 4, анализируя каждую цифру в 4-ричной записи числа. Если цифра равна 3, увеличиваем счетчик.

4.    Выводим результат:

После завершения цикла выводим количество троек в 4-ричной записи числа.

Ответ: 4027

 

Ну и напоследок решим задачу из основной волны 2022(III):

Значение арифметического выражения

2 * 161315 – 4 * 361502 + 5 * 361510 – 3 * 61331 − 253

записали в системе счисления с основанием 6. Определите количество значащих нулей в записи этого числа.

Решение программированием:

1.    Записываем выражение:

Мы задаем выражение 2 * 161315 – 4 * 361502 + 5 * 361510 – 3 * 61331 − 253 и сохраняем его результат в переменной f.

2.    Инициализируем счетчик нулей:

Создаем переменную count_zeros для подсчета количества значащих нулей в 6-ричной записи числа.

3.    Преобразуем число в 6-ричную систему:

Используя цикл, мы делим число на 6, анализируя каждую цифру в 6-ричной записи числа. Если цифра равна 0, увеличиваем счетчик.

4.    Выводим результат:

После завершения цикла выводим количество значащих нулей в 6-ричной записи числа. ​

Ответ: 1314

 

Задание №14 ЕГЭ по информатике проверяет знания и навыки работы с позиционными системами счисления, их основными принципами и операциями. Для успешного выполнения подобных задач важно хорошо разбираться в представлении чисел в различных системах, понимать арифметику в них, а также уметь применять программирование для работы с большими числами и выражениями.

Основные знания, необходимые для выполнения задания:

1.    Системы счисления — необходимо знать, как работают позиционные системы счисления с различными основаниями (например, двоичная, восьмеричная, десятичная, шестнадцатеричная и т. д.) и как выполняются основные арифметические операции.

2.    Преобразование чисел — умение переводить числа из одной системы счисления в другую и обратно.

3.    Работа с большими числами — знание Python или другого языка программирования, поддерживающего длинную арифметику, полезно для выполнения вычислений с числами, превышающими типичные диапазоны.

4.    Работа с остатками и делением — знание алгоритмов, которые позволяют последовательно извлекать цифры числа в нужной системе счисления, используя операции деления и нахождения остатка.

Полезные советы и лайфхаки для решения подобных задач:

1.    Используйте Python для вычислений — Python автоматически поддерживает длинную арифметику, что особенно полезно при работе с большими выражениями, встречающимися в заданиях.

2.    Циклы для извлечения цифр — цикл while, деление на основание системы и нахождение остатка позволяют легко преобразовать число в любую позиционную систему, при этом можно сразу считать нужные цифры (например, нули или другие значения).

3.    Оптимизация кода для поиска подходящего значения — при переборе значений, как в задачах с переменной, лучше проверять условия внутри цикла и завершать его при первом успешном результате.

4.    Интерпретация выражений с полиномами — для систем счисления с большими основаниями или при ограничениях на встроенные функции используйте представление чисел в виде полиномов, что позволяет более гибко работать с выражениями и переводить их в десятичную систему.

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

15 задание
Задание 15 ЕГЭ по информатике считается заданием повышенной сложности и требует глубокого понимания основ математической логики. Оно направлено на проверку знаний ключевых понятий, законов и приемов работы с логическими выражениями.

Давайте рассмотрим основные понятия и теоретические аспекты, которые необходимы для успешного выполнения этого задания:

Алгебра логики (булева алгебра) — это раздел математики, который занимается операциями и правилами, применяемыми к логическим выражениям. В алгебре логики рассматриваются высказывания, которые могут быть либо истинными, либо ложными, и на основе таких высказываний выполняются различные логические операции, такие как «и», «или», «не» и другие.

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

Логические высказывания могут комбинироваться друг с другом с помощью логических операций:

1. Конъюнкция (логическое «И»)

Обозначения: A ∧ B, A ⋅ B, A & B, A ∩ B, A and B, AB

Конъюнкция, или логическое «И», — это операция, которая возвращает истинное значение только тогда, когда оба высказывания истинны. Если хотя бы одно из высказываний ложно, то и результат будет ложным.

Пример:

  • A: «Сегодня солнечно» (истина)
  • B: «Температура выше 20°C» (истина)

Результат A ∧ B: истина, если оба утверждения верны, в противном случае — ложь.

Таблица истинности для операции конъюнкции:

2. Дизъюнкция (логическое «ИЛИ»)

Обозначения: A ∨ B, A + B, A ∪ B, A or B

Дизъюнкция, или логическое «ИЛИ», возвращает истину, если хотя бы одно из высказываний истинно. Ложь получается только тогда, когда оба высказывания ложны.

Пример:

  • A: «Сегодня солнечно» (истина)
  • B: «Сегодня идет дождь» (ложь)

Результат A ∨ B: истина, так как хотя бы одно из утверждений истинно.

Таблица истинности для операции дизъюнкции:

3. Отрицание (логическое «НЕ»)

Обозначения: ¬A, ∼A, Ā, NOT A

Отрицание, или логическое «НЕ», меняет значение истинности высказывания на противоположное. Если исходное высказывание истинно, то результат его отрицания будет ложным, и наоборот.

Пример:

  • A: «Сегодня солнечно» (истина)
  • Результат ¬A: ложь (т. к. исходное высказывание было истинным).

Таблица истинности для операции отрицания:

4. Импликация (логическое «ЕСЛИ…, ТО…»)

Обозначения: A→B, A⇒B, A⊃B

Импликация — это условное высказывание, которое говорит, что если первое утверждение (предпосылка) истинно, то второе утверждение (следствие) также должно быть истинно. Импликация ложна только в случае, если первое утверждение истинно, а второе ложно; во всех других случаях она считается истинной.

Пример:

  • A: «Если идет дождь» (истина)
  • B: «Значит, улица мокрая» (истина)

Результат A→B: истина, потому что в случае дождя улица действительно мокрая.

Таблица истинности для операции импликации:

5. Эквиваленция (логическое «РАВНОЗНАЧНОСТЬ»)

Обозначения: A↔B, A⇔B, A≡B

Эквиваленция — это операция, которая возвращает истину, когда оба высказывания имеют одинаковое значение истинности (оба истинны или оба ложны). Если значения истинности высказываний различны, эквиваленция будет ложной.

Пример:

  • A: «Сегодня пятница» (истина)
  • B: «Завтра суббота» (истина)

Результат A↔B: истина, так как оба утверждения истинны.

Таблица истинности для операции эквиваленции:

Также для решения задачи очень важно помнить про порядок выполнения логических операций:

  • Отрицание («НЕ», ¬) — выполняется первым, так как меняет значение истинности конкретного высказывания.
  • Конъюнкция («И», ∧) — выполняется следующим, объединяя высказывания так, что результат будет истинен только если оба операнда истинны.
  • Дизъюнкция («ИЛИ», ∨) — идет после конъюнкции, объединяя высказывания так, что результат будет истинен, если хотя бы одно из них истинно.
  • Импликация («ЕСЛИ…, ТО…», →) — выполняется после конъюнкции и дизъюнкции, связывая условие и следствие.
  • Эквиваленция («РАВНОЗНАЧНОСТЬ», ⇔) — выполняется последней, проверяя равенство значений истинности двух высказываний.

Также для решения этого задания могут понадобиться основные законы алгебры логики:

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

1.    Определи количество переменных: сначала определите, сколько логических переменных используется в выражении (например, A, B, C).

2.    Найди число строк: для n переменных потребуется 2^n строк, поскольку каждая переменная может принимать одно из двух значений (0 или 1), и нужно учитывать все возможные комбинации. Например, для двух переменных A и B потребуется 2^2 = 4 строки, а для трех переменных 2^3 = 8.

3.    Заполни колонки переменных: создайте отдельные колонки для каждой переменной и начните заполнять их значениями 0 и 1. Распределяйте значения так, чтобы каждая переменная менялась с разной частотой:

  • Для первой переменной чередуйте значения через одну строку (0, 1, 0, 1…).
  • Для второй — через две строки (0, 0, 1, 1…).
  • Для третьей — через четыре строки (0, 0, 0, 0, 1, 1, 1, 1…), и так далее.

4.    Вычисли промежуточные результаты: если логическое выражение сложное и содержит несколько операций, добавьте столбцы для промежуточных операций, таких как ¬A, A ∧ B, A ∨ B, и заполните их значениями для каждой строки. Не забывайте про порядок выполнения логических операций!

5.    Рассчитай итоговое выражение: после заполнения всех промежуточных столбцов определите значение итогового выражения для каждой строки, используя уже вычисленные значения. Запишите полученные значения в последний столбец таблицы.

6.    Проверь правильность: убедитесь, что каждая комбинация возможных значений переменных и соответствующие результаты выражения указаны верно.
Таким образом, таблица истинности будет наглядно показывать, каким будет результат логического выражения для каждой возможной комбинации входных значений.

Побитовая конъюнкция — это операция, которая выполняется между двумя числами на уровне их битов. Её суть заключается в том, чтобы сравнить каждый бит двух чисел и вернуть 1 только в тех позициях, где оба сравниваемых бита равны 1. Во всех остальных позициях результат будет 0.

Как работает побитовая конъюнкция?

1.    Числа преобразуются в двоичную систему (последовательности 0 и 1).

2.    Сравниваются соответствующие биты (поразрядно) двух чисел.

3.    На каждой позиции возвращается 1, если оба бита равны 1, иначе — 0.

В программировании побитовая конъюнкция обозначается как &.

Пример

Возьмём два числа: 14 и 5.

  • 14 в двоичной системе: 1110
  • 5 в двоичной системе: 0101

Выполним побитовую конъюнкцию:
1110 (14)
& 0101 (5)
—-
0100 (результат = 4)

В результате получится число 4, так как только в третьем бите (слева направо) оба числа имеют 1.

Для программного способа решения задачи нам нужно знать некоторые функции и библиотеки языка Python:

1)    itertools — это встроенный модуль в Python, который предоставляет множество удобных инструментов для работы с итераторами. Он содержит функции для создания и работы с различными последовательностями и комбинациями данных, позволяя работать с огромными наборами данных более эффективно и лаконично.

Основные особенности модуля:

  • Он работает с итераторами, что делает операции более экономичными по памяти.
  • Содержит функции для создания комбинаций, перестановок, циклов, бесконечных последовательностей и других полезных операций.

Пример: вы можете использовать itertools для создания всех возможных комбинаций из списка, фильтрации данных, объединения или повторения элементов.

2)    combinations — это функция из модуля itertools, которая генерирует все возможные комбинации определённой длины из заданной последовательности. При этом элементы в комбинации не повторяются, и порядок элементов не имеет значения.

Результатом будут все возможные пары из [1, 2, 3]

3)    Цикл for в Python — это инструмент, который позволяет выполнять один и тот же блок кода несколько раз, перебирая элементы из какой-либо последовательности, например списка, строки, диапазона чисел или другого итерируемого объекта. Например:

Этот код перебирает список numbers, на каждой итерации сохраняет текущий элемент в переменную num, печатает значение num.

4)    Оператор if проверяет, выполняется ли какое-то условие, и, если оно истинно (то есть True), выполняет блок кода. Это позволяет программе принимать решения на основе условий. Например:

В этом примере, если number больше 5, будет выполнен первый блок, иначе — блок после else

5)    all — это встроенная функция Python, которая проверяет, выполнено ли все условия или все элементы истинны в итерируемом объекте (например, списке, строке, множестве).

Как работает:

  • Проходит по всем элементам последовательности.
  • Если все элементы истинны (или все условия выполняются), возвращает True.
  • Если хотя бы один элемент ложный (или условие не выполняется), возвращает False.

 

Перейдём к примеру решения прототипов задач:

Разберём задачу №15 ЕГЭ 2025 из демоверсии ФИПИ:

На числовой прямой даны два отрезка: P = [15; 40] и Q = [21; 63]. Укажите наименьшую возможную длину такого отрезка A, для которого логическое выражение

(x ∈ P) → (((x ∈ Q) ∧ ¬(x ∈ A)) → ¬(x ∈ P))

истинно (т.е. принимает значение 1) при любом значении переменной x.

Решение с помощью программирования:

1.    Открываем нашу среду разработки и анализируем условие: нам нужно найти минимальную длину отрезка A, при которой выражение (x ∈ P) → (((x ∈ Q) ∧ ¬(x ∈ A)) → ¬(x ∈ P)) всегда истинно для любого x.

2.    Понимание логического выражения:

  • P = [15, 40] — отрезок P;
  • Q = [21, 63] — отрезок Q;
  • A = [a1, a2] — отрезок, который нужно найти.

Выражение (x ∈ P) → (((x ∈ Q) ∧ ¬(x ∈ A)) → ¬(x ∈ P)) будет истинным, когда x ∈ P, выполнение (((x ∈ Q) ∧ ¬(x ∈ A)) должно приводить к ¬(x ∈ P).

Иными словами, отрезок A должен быть таким, чтобы соблюдалась эта логика для всех x в P и Q.

3.    Мы создаём массив ox, представляющий все значения x с шагом 0.25 от 10 до 65 (диапазон чуть шире P и Q, чтобы учесть все случаи).

4.    Функция func(x) проверяет истинность логического выражения для заданных границ a1 и a2 (границы отрезка A).

5.    Используем itertools.combinations(ox, 2) для перебора всех возможных пар значений (a1, a2), где a1 < a2. Для каждой пары вычисляем разницу a2 − a1 (длина отрезка A).

6.    Для каждого отрезка A = [a1, a2] проверяем, выполняется ли логическое выражение func(x) для всех значений x в ox.

7.    В конце выбираем минимальную длину отрезка A (просят по условию), при которой логическое выражение истинно.

8.    На выходе алгоритм возвращает минимальную длину отрезка A, которая гарантирует истинность логического выражения (это и есть наш ответ).

Ответ: 19

 

Досрочная волна 2021:

На числовой прямой даны два отрезка: P = [17; 54] и Q = [37; 83]. Укажите наименьшую возможную длину такого отрезка A, что логическое выражение

(x ∈ P) → (((x ∈ Q) ∧ ¬(x ∈ A)) → ¬(x ∈ P))

истинно (т.е. принимает значение 1) при любом значении переменной x.

Решение с помощью аналитики:

1.    Сначала давайте преобразуем наше длинное выражение: избавимся от записи «x ∈», заменив её просто записью отрезка (например «x ∈ P» заменим просто «P»):  P → ((Q ∧ ¬A) → ¬P)

2.    Воспользуемся эквивалентностью логических выражений: A → B эквивалентно ¬A ∨ B, то есть P → ((Q ∧ ¬A) → ¬P) эквивалентно P → (¬(Q ∧ ¬A) ∨ ¬P) (преобразовали выражение в скобках), эквивалентно ¬P ∨ (¬(Q ∧ ¬A) ∨ ¬P) (преобразовали внешнее выражение)

3.    Теперь воспользуемся законом Де Моргана: ¬(A ∧ B) = ¬A ∨ ¬B:
¬P ∨ ((¬Q ∨ A) ∨ ¬P) (здесь мы пользуемся ¬(¬A) = A)

4.    По ассоциативности (A ∨ (B ∨ C) = A ∨ B ∨ C) получим ¬P ∨ ¬Q ∨ A ∨ ¬P. А т.к. A ∨ A = A, то можем наше выражение можно записать ¬P ∨ ¬Q ∨ A.

5.    Инвертируем выражение ¬(¬P ∨ ¬Q) = P ∧ Q, тогда ¬P ∨ ¬Q ∨ A = ¬(P ∧ Q) ∨ A. Мы помним, что это выражение означает, что x принадлежит каждому отрезку. Выражение должно быть равно единице и x ∈ A должно выполняться (по условию), тогда давайте рассмотрим 2 варианта:

1)    ¬(P ∧ Q) = 0, A = 1;

2)    ¬(P ∧ Q) = 1, A = 1

6.    Изобразим эти случаи на числовой прямой (значения x отмечены фиолетовым цветом):

7.    Мы видим, что минимальная возможная длина отрезка A равна 54 – 37 = 17.

Ответ: 17

 

Досрочная волна 2024:

Обозначим через ДЕЛ(n, m) утверждение «натуральное число n делится без остатка на натуральное число m».

Для какого наибольшего натурального числа A логическое выражение

¬ДЕЛ(x, A) → (ДЕЛ(x, 28) → ¬ДЕЛ(x, 49))

истинно (т.е. принимает значение 1) при любом натуральном значении переменной x?

Решение программированием:

1.    Открываем нашу среду разработки и анализируем условие: ДЕЛ(x, m) означает, что x делится на m без остатка (x mod  m = 0). Перепишем выражение с использованием эквивалентности логических операций: (x % A != 0) → ((x % 28 == 0) → (x % 49 != 0)).

2.    Создаем функцию func(x), которая проверяет истинность выражения для каждого x:
def func(x): return (x % a != 0) <= ((x % 28 == 0) <= (x % 49 != 0)) (помним о том, что импликация эквивалентна <=)

3.    Мы проверяем для каждого A от 1 до 999 (если сомневаетесь, диапазон можно сделать больше), выполняется ли условие для всех x от 1 до 100000 (тут тоже диапазон можно ставить больше, но обычного этого вполне достаточно):

  • Цикл for a in range(1, 1000): перебирает возможные значения AAA.
  • all(func(x) == 1 for x in range(1, 100000)) проверяет, что выражение истинно для всех x от 1 до 100,000.

4.    Если условие выполняется для всех x, мы выводим A, используя: print(a)

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

Ответ: 196

 

Основная волна 08.06.2024:

Обозначим через ДЕЛ(n, m) утверждение «натуральное число n делится без остатка на натуральное число m». Пусть на числовой прямой дан отрезок B = [70, 90].

Для какого наибольшего натурального числа A логическое выражение

ДЕЛ(x, A) ∨ ((x ∈ B) → ¬ДЕЛ(x, 22))

истинно (т.е. принимает значение 1) при любом целом положительном значении переменной x?

Решение аналитическим способом:

1.     Анализируем условие задачи:У нас есть логическое выражение: ДЕЛ(x, A) ∨ ((x ∈ B) → ¬ДЕЛ(x, 22)), где:

  • ДЕЛ(x, A): x делится на A без остатка.
  • X ∈ B: x принадлежит отрезку [70, 90].
  • ДЕЛ(x, 22): x делится на 22 без остатка.

Задача состоит в нахождении наибольшего значения A, при котором выражение истинно (= 1) для всех x > 0.

2.     Упростим логическое выражение:Сначала преобразуем импликацию: (x ∈ B) → ¬ДЕЛ(x, 22) ≡ ¬(x ∈ B) ∨ ¬ДЕЛ(x, 22)

Подставим это в изначальное выражение: ДЕЛ(x, A) ∨ (¬(x ∈ B) ∨ ¬ДЕЛ(x, 22))

Сгруппируем: (ДЕЛ(x, A) ∨ ¬(x ∈ B)) ∨ ¬ДЕЛ(x, 22)

3.    Разберём возможные случаи для x:

1)    Если ДЕЛ(x, A) = 1 (то есть x делится на A), то всё выражение становится истинным независимо от остальных условий.

2)    Если ДЕЛ(x, A) = 0 (то есть x не делится на A), то выражение истинно только если: ¬(x ∈ B) ∨ ¬ДЕЛ(x, 22) = 1

4.    Рассмотрим x ∈ B = [70, 90]Если x ∈ B, то условие упрощается: ¬ДЕЛ(x, 22) = 1. То есть, x не должно делиться на 22. Если x ∉ B, то ¬(x ∈ B) = 1, и всё выражение автоматически истинно.

5.    Ограничение на A:Теперь важно, чтобы ДЕЛ(x, A) гарантировал истинность выражения для всех x > 0. Чтобы выражение было истинно для любого x, A должно быть таким, чтобы оно покрывало все случаи, когда (x ∈ B) ∧ ДЕЛ(x, 22) = 1

Числа x ∈ B, которые делятся на 22, — это пересечение [70, 90] с числами, кратными 22: {0, 22, 44, 66, 88, … } ∩ [70, 90] = {88}. Значит, единственное число из отрезка B, которое делится на 22, — это 88.

Для выражения быть истинным, 88 обязательно должно делиться на A. Таким образом, A должно быть делителем числа 88.

6.    Найдём наибольшее A:Делители числа 88: 1, 2, 4, 8, 11, 22, 44, 88. Наибольшее значение A из этого списка — 88.

7.    Проверка:Если A = 88, то:

  • Все x ∈ B, которые делятся на 22 (в данном случае только 88), делятся на A, поэтому выражение истинно.
  • Все x ∉ B автоматически удовлетворяют ¬(x ∈ B) = 1, поэтому выражение истинно.
  • Остальные x ∈ B, которые не делятся на 22, удовлетворяют ¬ДЕЛ(x, 22) = 1, поэтому выражение истинно.

Ответ: 88

 

Основная волна 19.06.2024 (Центр):

Для какого наибольшего целого неотрицательного числа A формула

(x + y ≤ 30) ∨ (y ≤ x + 2) ∨ (y ≥ A)

тождественно истинна (т.е. принимает значение 1) при любых целых положительных x и y?

Решение с помощью программирования:

1.    Анализируем условие задачи: у нас есть три подвыражения, соединённых логической операцией «или» (∨):

  • x + y ≤ 30 — это неравенство ограничивает x и y сверху;
  • y ≤ x + 2 — это неравенство связывает y с x;
  • y ≥ A — это условие зависит только от A и задаёт нижнюю границу для y

Логическое выражение истинно для любых x и y, если хотя бы одно из трёх подвыражений истинно для всех комбинаций x и y. Задача — найти максимальное A, при котором это выполняется.

2.    Чтобы выражение было истинным для любых x и y:

  • Если y ≥ A, то это подвыражение уже истинно. Тогда два других подвыражения не важны.
  • Если y < A, то одно из подвыражений x + y ≤ 30 или y ≤ x + 2 должно быть истинным.

Поэтому задача сводится к поиску такого A, при котором для всех y < A выполняется хотя бы одно из двух условий:
1)    x + y ≤ 30;
2)    y ≤ x + 2

3.    Перебираем значения A: для проверки каждого значения A перебираем x и y (в коде — в пределах большого диапазона, например 1 ≤ x, y < 1000).

Проверяем, выполняется ли выражение (x + y ≤ 30) ∨ (y ≤ x + 2) ∨ (y ≥ A) для всех комбинаций x и y. Если это так, сохраняем значение A.

4.    Поскольку задача требует найти наибольшее значение A, проще проверять значения A, начиная с больших (например, от 1000 вниз). Как только мы найдём первое значение A, для которого выражение выполняется для всех x и y, это и будет наибольшее A.

Ответ: 17

 

Основная волна 04.07.2024:

Для какого наибольшего целого неотрицательного числа A формула

(x + y ≤ 24) ∨ (y ≤ x — 2) ∨ (y ≥ A)

тождественно истинна (т.е. принимает значение 1) при любых целых положительных x и y?

Решение аналитикой:

1.    Нам нужно найти наибольшее неотрицательное целое число A, при котором формула: (x + y ≤ 24) ∨ (y ≤ x — 2) ∨ (y ≥ A) была тождественно истинна для любых положительных целых чисел x и y.

2.    Ищем случаи, когда первые два условия ложны. Формула будет ложной только тогда, когда все три условия ложны одновременно. Поэтому нам нужно найти такие значения x и y, при которых:

1)    x + y > 24 (первое условие ложно);
2)    y > x − 2 (второе условие ложно).

3.    Выражаем y из условий: y > 24 – x (из первого условия); y > x -2 (из второго). Таким образом, для одновременного выполнения обоих условий y должно быть больше максимума из двух выражений: y > max(24 − x, x − 2)

4.    Наша цель — найти такие значения x, при которых y минимально. Рассмотрим функцию: f(x) = max(24 − x, x − 2). Найдем минимальное значение y при различных x:
для x = 13: f(13) = max(24 − 13, 13 − 2) = max(11, 11) = 11; y > 11  ⟹  y ≥ 12
для x = 12: f(12) = max(24 − 12, 12 − 2) = max(12, 10) = 12; y > 12  ⟹  y ≥ 13

Видим, что минимальное y достигается при x = 13, где y ≥ 12.

5.    Чтобы формула была истинна при этих x и y, третье условие должно быть истинным: y ≥ A. Подставляем минимальное y = 12: 12 ≥ A ⟹ A ≤ 12. Таким образом, наибольшее целое A = 12

6.    Проверяем полученное значение A: для любых положительных целых x и y:

  • если x + y ≤ 24 — формула истинна;
  • иначе, если y ≤ x − 2 — формула истинна;
  • иначе, при x + y > 24 и y > x − 2, должно выполняться y ≥ 12 для истинности формулы.

Поскольку минимальное y в этом случае равно 12, то при A = 12 формула всегда истинна.

Ответ: 12

 

Следующее задание из варианта с досрочной волны(I) 2023:

Обозначим через m & n поразрядную конъюнкцию неотрицательных целых чисел m и n. Так, например,

14 & 5 = 11102 & 01012 = 01002 = 4

Для какого наименьшего неотрицательного целого числа A формула

x & 39 = 0 ∨ (x & 11 = 0 → ¬(x & A = 0))

тождественно истинна (т.е. принимает значение 1) при любом неотрицательном целом значении переменной x?

Решение с помощью программирования:

1. Переводим задачу на язык программирования: мы работаем с поразрядной конъюнкцией (&) чисел. Нам необходимо найти наименьшее неотрицательное целое число A, при котором выражение: x & 39 = 0 ∨ (x & 11 = 0 → ¬(x & A = 0)) истинно для любого x. Упростим выражение:

  • (x & 11 = 0) → ¬(x & A = 0) эквивалентно ¬(x & 11 = 0) ∨ ¬(x & A=0)
  • Подставляем в исходное выражение: (x & 39 = 0) ∨ (¬(x & 11 =0) ∨ ¬(x & A = 0))
  • Это можно записать как: (x & 39 = 0) ∨ ((x & 11 ≠ 0) ∨ (x & A ≠ 0))

2.    Определяем логическое выражение в функции (def func(x): return (x & 39 == 0) or ((x & 11 == 0) <= (x & a != 0))):

  • x & 39 == 0: проверяем, обнуляются ли все биты x, которые перекрываются с 39
  • x & 11 == 0: проверяем, обнуляются ли все биты x, которые перекрываются с 11
  • x & a ≠ 0: проверяем, есть ли общие биты между x и текущим значением a

3.    Мы ищем наименьшее значение A, поэтому перебираем A от 0 до 999:

for a in range(1000):

a — это текущее проверяемое значение.

4.    Проверка условия для всех x: для каждого значения a, мы проверяем, выполняется ли функция func(x) для всех x от 0 до 999:
if all(func(x) for x in range(1000)):

Функция all возвращает True, если func(x) == 1 для всех x в заданном диапазоне. Таким образом, мы проверяем истинность выражения для всех x.

5.    Вывод результата: как только мы находим значение a, при котором выражение истинно для всех x, мы его выводим и завершаем цикл:

print(a)
break

6.    Итоговый результат: алгоритм завершится, как только найдётся наименьшее A, при котором формула истинна для всех x.

Ответ: 36

 

Для закрепления материала разберём аналогичную задачу:

Обозначим через m & n поразрядную конъюнкцию неотрицательных целых чисел m и n.

Так, например, 14 & 5  =  11102 & 01012  =  01002  =  4. Для какого наименьшего неотрицательного целого числа А формула 
x & 29 ≠ 0 → (x & 17 = 0 → x & А ≠ 0)

тождественно истинна (т. е. принимает значение 1 при любом неотрицательном целом значении переменной x)?

Решение аналитическим способом:

1.    Разбираем битовые операции: для начала рассмотрим побитовые операции (&) и запишем двоичные представления чисел:

  • 29 в двоичной системе: 111012 (единицы стоят в позициях 4, 3, 2 и 0).
  • 17 в двоичной системе: 100012 (единицы стоят в позициях 4 и 0).

2.    Анализируем формулу: x & 29 ≠ 0 → (x & 17 = 0 → x & А ≠ 0) раскрывается так: если x & 29 ≠ 0 (т.е. у x есть хотя бы один бит, совпадающий с 29), и при этом x & 17 = 0 (т.е. биты 4 и 0 у x не установлены), то должно выполняться x & A ≠ 0 (т.е. у A должен быть хотя бы один бит, совпадающий с битами x).

3.    Определяем критические биты:

  • x & 29 ≠ 0: у x должен быть хотя бы один из битов 4, 3, 2 или 0 установлен.
  • x & 17 = 0: у x нет битов 4 и 0.

Таким образом, остаются только биты 3 и 2. Это значит, что у x должен быть установлен хотя бы один из этих битов.

4.    Ищем минимальное A: нам нужно подобрать A, чтобы выполнялось x & A ≠ 0, если у x установлен хотя бы один из битов 3 или 2. Рассмотрим варианты:

1)    A = 4 (бит 2 установлен). Не подходит, так как если у x установлен только бит 3, то x & A = 0.

2)    A = 8 (бит 3 установлен). Не подходит, так как если у x установлен только бит 2, то x & A = 0.

3)    A = 12 (биты 3 и 2 установлены). Подходит, так как любой x, у которого есть бит 2 или 3, обязательно даст x & A ≠ 0

5.    Проверяем решение: при A=12 (двоичное 11002): если x содержит бит 3 или 2 (и при этом биты 4 и 0 не установлены), то x & A ≠ 0 всегда выполняется. Таким образом, A = 12 удовлетворяет формуле.

Ответ: 12

Задание №15 ЕГЭ по информатике проверяет глубокое понимание логики, операций над числами и работу с логическими выражениями. Оно требует не только теоретических знаний, но и умения грамотно использовать программирование для поиска решений.

Основные знания для выполнения задания:

1.    Логические операции и таблицы истинности:

  • Уметь работать с основными логическими операциями: конъюнкция (И), дизъюнкция (ИЛИ), отрицание (НЕ), импликация (ЕСЛИ…, ТО…), эквиваленция (РАВНОЗНАЧНОСТЬ).

Понимать порядок выполнения логических операций и их эквивалентности.

2.    Преобразование логических выражений:

  • Использование законов алгебры логики, таких как законы Де Моргана, законы идемпотентности, коммутативности и ассоциативности.
  • Умение упрощать сложные логические выражения для упрощения решения задачи.

3.    Работа с отрезками числовой прямой:

  • Уметь анализировать пересечения, объединения и исключения отрезков, чтобы находить минимальные или максимальные значения, удовлетворяющие условию.

4.    Побитовые операции:

  • Знание операций побитовой конъюнкции (&), дизъюнкции (|) и сдвигов. Эти операции часто используются для работы с числами в двоичном представлении.

5.    Программирование:

  • Использование Python для автоматизации проверки условий и перебора значений:
  • Циклы (for, while) для перебора возможных значений.
  • Оператор if для проверки условий.
  • Модуль itertools и функция combinations для перебора комбинаций значений.
  • Функция all для проверки, выполняется ли условие для всех значений.

Небольшие лайфхаки:

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

Следуя этим рекомендациям, вы сможете решать задачи №15 уверенно и без лишних затруднений.

16 задание

Алгоритм называется рекурсивным, если в его определении содержится прямой или косвенный вызов этого же алгоритма;
Рекурсивная функция – это такая функция, которая в процессе выполнения обращается сама к себе (зависит сама от себя).

Классические примеры рекурсивных алгоритмов.

Пример 1.
Вычисление факториала. С одной стороны, факториал определяется так: n!. С другой стороны, , т.е. чтобы вычислить факториал числа n, нужно сначала вычислить факториал числа (n-1). Мы видим, что алгоритм вычисления факториала зависит от самого себя.
Одна из самых больших опасностей рекурсии – бесконечный вызов функцией самой себя. Если неверно построить алгоритм, то функция может пропустить конечное условие и выполняться бесконечно. Проще всего допустить эту ошибку, если не указать условие остановки. В нашем случае конечное условие – это 1!=1.

Пример 2.
Нахождение НОД (наибольшего общего делителя) двух натуральных чисел.
Есть несколько способов нахождения этого значения. Одним из них является алгоритм Евклида.Пусть есть два целыхчисла а и b.
Если а=b, то НОД(а,b)=а – конечное условие рекурсии.
Если а>b, то НОД(а,b)=НОД(а-b,b).
Если а<b, то НОД(а,b)=НОД(а,b-а). И снова мы видим, что алгоритм вычисления наибольшего общего делителя зависит сам от себя.

Таким образом, для того, чтобы задать рекурсивную функцию, нужно определить:

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

Данное задание может быть решено тремя способами:

  • аналитически,
  • с использованием электронных таблиц
  • с помощью программы на языке программирования.

Примеры решения задач

Пример 3.

Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями: F(1) = 1 F(n) = 5*F(n–1) + 3*n, при n >1
Чему равно значение функции F(4)?
Решение:
Аналитический способ:
F(1) = 1
F(2)=5*F(1)+3*2=11
F(3)=5*F(2)+3*3=64
F(4)= 5*F(3)+3*4=332
Ответ: 332.

Пример 4.
Алгоритм вычисления значения функции F(n) и G(n), где n – натуральное число, задан следующими соотношениями:
F(1) = 0
F(n) = F(n–1) + n, при n >1
G(1) = 1
G(n) = G(n–1) * n, при n >1
Чему равно значение функции F(5) + G(5)?
Решение:
С помощью программы на языке Python:
1. Для программной реализации данной задачи воспользуемся динамическим программированием, которое позволяет свести вычисление значения функции, заданной рекурсивно, к заполнению массива (таблицы)
2.
f=[0]*10 – заполняем массив f десятью нулями
g=[1]*10 – заполняем массив d десятью единицами
for n in range(2,10):
f[n] = f[n-1]+n
g[n] = g[n-1]*n
print (f[5]+g[5])
Ответ: 134

Пример 5.
Функция F(n), где n — натуральное число, вычисляется по следующему правилу:
F(n) = 1, при n = 1;
F(n) = F(n-3)*n, при n > 1 чётном
F(n) = F(n-2)*n, при n > 1 нечётном
Чему равно значение выражения F(6115)/F(6112)?
Ответ округлите до целого.
Решение:
Аналитический способ:
1. В данном задании удобно выполнить обратный расчет для функции F
F(6115) = 6115*F(6113) = 6115*6113*F(6111) = 6115*6113*6111*F(6109)
F(6112) = 6112*F(6109)
2. F(6115)/F(6112) = 6115*6113*6111*F(6109)/(6112*F(6109) одинаковый множитель можно сократить посчитать числовые значения с учетом округления до целого. Получим F(6115)/F(6112) = 6115*6113*6111/6112
Ответ: 37374879

Пример 6.
Функция F(n), где n — натуральное число, вычисляется по следующему правилу:
F(n) = 1, если n < 4 F(n) = n, если n > 3 и число n нечётное,
F(n) = F(n – 1) + F(n – 2) + F(n – 3), если n > 3 и число n чётное.
Чему равно значение выражения F(2254) – F(2252)?
Решение:
С помощью электронных таблиц:
1. В столбце А задаем значения n от 1 до 2254.
2. В столбце B задаем функцию: F(1)=1, F(2)=1, F(3)=1 , далее использую внешнюю функцию ЕСЛИ и внутреннюю ЕНЕЧЕТ задаем условие задачи.

1

3. Теперь протягиваем формулу до n=2254 и в любой ячейке, находящейся рядом посчитать значение F(2254) – F(2252). Получим 4504

2

Ответ: 4504

Пример 7.
Функция F(n), где n — натуральное число, вычисляется по следующему правилу:
F(n) = 1 при n = 1
F(n) = 2•F(n–1) + n + 3, если n> 1
Чему равно значение функции F(19)?
Решение:
С помощью программы на языке Python:
1. Для реализации задачи воспользуемся классической реализацией рекурсивной функции. Главная проблема – не получить бесконечную рекурсию; для этого рекомендуется сразу в начале функции записать условие окончания рекурсии, которое задаётся условием «F(n) = 1 при n = 1», и сразу завершить выполнение функции.
2. Недостаток данной реализации в том, что при больших значениях аргумента функция F(n) может вычисляться очень долго.

def F( n ):
if n == 1: return 1
if n >1:
return 2*F(n-1) + n + 3
print( F(19) )
Ответ: 1834984

Пример 8.
Задача 1. Функция F(n), где n — натуральное число, вычисляется по следующему правилу:
F(n) = n, при n < 4; F(n) = F(n-3)*3, при n > 3 кратном трём;
F(n) = F(n-1)+n, при n > 3, которое даёт остаток 1 при делении на 3;
F(n) = F(n-2)+n, при n > 3, которое даёт остаток 2 при делении на 3.
Чему равно значение выражения F(7000) — 9 * F(6993)?
Решение:
Аналитический способ:
1. Будем выполнять обратный расчет функции F.Т.к 7000 при делении на 3 дает остаток 1 можно записать F(7000) = F(6999) +7000
2. Число 6999 кратно 3, поэтому
F(6999) = (6993)*3; тогда
F(7000) = 7000+ F(6996)*3 = 7000+F(6993)*3*3= 7000+9*F(6993)
3. Таким образом, F(7000) — 9 * F(6993)= 7000+9*F(6993) -9*F(6993) = 7000
Ответ: 7000

Пример 9.
Последовательность чисел трибоначчи задается рекуррентным соотношением:
F(1) = 0
F(2) = 1
F(3) = 1
F(n) = F(n–3) + F(n–2) + F(n–1), при n >3, где n – натуральное число.
Чему равно одиннадцатое число в последовательности трибоначчи?
В ответе запишите только натуральное число.
Решение:
С помощью программы на языке Python:
f=[0]*20
f[1]=0
f[2]=1
f[3]=1
for n in range(4,20):
f[n] = f[n-1]+f[n-2]+f[n-3] print (f[11])
Ответ: 149

Пример 10.
Функция F(n), где n — натуральное число, вычисляется по следующему правилу:
F(1) = 1
, если n > 1.
Чему равно значение функции F(10)?
В ответе запишите только натуральное число.
Решение:
Аналитический способ:
F(2) = F(1) +21 = 1 + 2 =3F(3) = F(2) + 22 = 3 + 4 = 7;
F(4) = F(3) +23 = 7 + 8 = 15 F(5) = F(4) +24 = 15 + 16 = 31;
F(6) = F(5) +25 = 31 + 32 = 63F(7) = F(6) +26 = 63 + 64 = 127;
F(8) = F(7) +27 = 127 + 128 = 255 F(9) = F(8) + 28 = 255 + 256 = 511;
F(10) = F(9) + 29 = 511 + 512 = 1023
Можно заметить, что .
Ответ: 1023

Пример 11
Функция F(n), где n — натуральное число, вычисляется по следующему правилу:
F(n) = 1, если n < 3 F(n) = F(n – 1) + F(n – 2), если n > 2.
Чему равно значение выражения (F(1006) – F(1004)) / F(1005)?
Решение:
С помощью электронных таблиц:
1. В столбце А задаем значения n от 1 до 1006.
2. В столбце B задаем функцию: F(1)=1, F(2)=1, F(3)=F(1)+F(2), далее протягиваем формулу до строки 1006 .

3

3. Далее в отдельной ячейке считаем искомое выражение.
4. Примечание: В электронных таблицах большие числа представляются в виде чисел с плавающей точкой.Например, значение в ячейке 7Е+204 означает . Видим, что значения очень большие.
5. Еще одно примечание: самое большое число, которое можно записать в Excel примерно равно .

4

Ответ: 1

Пример 12.
Алгоритм вычисления значения функции F(n). где n — натуральное число, задан следующими соотношениями:
F(1)= 1; F(2)=1;
F(n) = 2*F(n-2) + n при n >2.
Чему равно значение функции F(15)? В ответе запишите только натуральное число.
Решение6
С помощью программы на языке Python:
def F(n):
if n == 1:
return 1
if n == 2:
return 1
if n > 2:
return 2*F(n-2) + n
print(F(15))

Ответ: 749

Пример 13.
Функция F(n), где n — натуральное число, вычисляется по следующему правилу:
F(n) = 1, если n = 1

, если n > 1.
Чему равно значение выражения F(316) / 631*F(313)?
Решение:
Аналитический способ:
F(316)=(316*2-1)*F(315) = (316*2-1)(315*2-1)*F(314)= (316*2-1)(315*2-1)*(314*2-1)*F(313)= = 631*629*627*F(313)
F(316) / 631*F(313)= 631*629*627*F(313) / 631*F(313)= 394383
Ответ: 394383.

Пример 14.
Функция F(n), где n — натуральное число, вычисляется по следующему правилу:
F(n) = 1, если n < 3 F(n) = F(n – 1) + n – 1, если n > 2 и число n чётное,
F(n) = F(n – 2) + 2n — 2, если n > 2 и число n нечётное.
Определите значение F(34).
Решение:
С помощью электронных таблиц:
1. В столбце А задаем значения n от 1 до 34.
2. В столбце B задаем функцию: F(1)=1, F(2)=1, далее использую внешнюю функцию ЕСЛИ и внутреннюю ЕНЕЧЕТ задаем условие задачи.

5

3. Теперь протягиваем формулу до n=34и получим 578
Ответ: 578

Пример 15.
Функция F(n), где n — натуральное число, вычисляется по следующему правилу:
F(n) = n, если n < F(n) = F(n / 2) + 1, если  и число n чётное, F(n) = F(3n + 1) + 1, если  и число n нечётное. Определите количество значений n на отрезке [1;100000], для которых F(n) равно 16. Решение: С помощью программы на языке Python: 1. Описываем функцию: при n=1 функция равна 1, при n=2, функция равна 2,далее в зависимости от четности n описываем функцию. 2. Далее задаем условие для поиска n, значение функции, в которых равно 16 и в указанном диапазоне. def F(n): if n == 1: return 1 if n == 2: return 2 if n % 2 == 0 and :
return F(n / 2)+1
else:
return F(3*n +1)+1
i = 1
while F(i) != 16 and i<100000: i += 1 print(i) Ответ: 22

17 задание

В 17 задании ЕГЭ по информатике проверяется умение ученика пользоваться Питоном, считывать данные из текстового файла и анализировать последовательность чисел.
Давайте разберем все основные приемы, используемые в 17 задании.

Считывание данных с текстового файла:

Чтобы считать данные из текстового файла в Питоне, можно использовать конструкцию with:

with open(‘example.txt’, ‘r’) as file:

Пояснение:

  • open(‘example.txt’, ‘r’) – открывает файл example.txt в режиме чтения
  • with гарантирует, что файл будет закрыт после завершения блока.
  • as file – создает переменную file, к которой можно обращаться как к открытому файлу

Теперь у созданной переменной file мы можем вызывать методы, позволяющие считывать текст из файла:

file.read() – считываение всего файла

file.readline() – считываение одной строки

file.readlines() – считывает весь файл и записывает одну строку как элемент массива

Пример:

Мы получили массив со всеми строками. В каждой строке на конце есть символ \n – это символ переноса строки.  Мы можем его убрать, изменив код:

Здесь мы считываем каждую строку, и пока строка есть (проверка while line), мы убираем последний элемент строки, добавляем ее в массив строк и считываем новую строку.

 

В данном задании часто попадаются условия про соседние элементы. Давайте разберем как найти соседние элементы

Мы можем перебирать элементы массива простым циклом

for i in words

Но еще мы можем проходиться по индексам последовательности с помощью цикла

for i in range(len(words))

где len(words) – длина массива words, range() – позволяет циклу перебирать числа от 0 до числа, указанного в скобках, не включительно

Таким образом, i – номер текущего элемента, а i + 1 – номер следующего элемента. Так мы можем просто получить значения соседей

words[i – 1] – сосед слева
words[i] – текущий элемент
words[i + 1] – сосед справа

Заметим, что, если писать for i in range(len(words)), то при достижении последнего индекса i обращение к words[i + 1] вызовет ошибку, так как i + 1 будет за пределами длины списка

Таким образом, range(len(words) — 1) гарантирует, что последний индекс i будет на 1 меньше длины списка, позволяя безопасно обращаться к следующему элементу words[i + 1].

Мы разобрали все основные приемы, использующиеся в задании 17. Давайте введем общий алгоритм действий в этой задаче:

1.    Чтение и запись данных
2.    Поиск подходящих пар
3.    Вывод результата

 

Теперь давайте перейдем к решению 17 задач

1. Демоверсия 2025

В файле содержится последовательность натуральных чисел. Её элементы могут принимать целые значения от 1 до 100 000 включительно. Определите количество пар последовательности, в которых остаток от деления хотя бы одного из элементов на 16 равен минимальному элементу последовательности. В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.

1. Чтение и запись данных

  • Сначала открываем файл 17_1.txt для чтения. Каждую строку проверяем: если строка содержит символ переноса строки (\n), удаляем его. Полученную строку преобразуем в целое число и добавляем в список чисел.
  • Определяем минимальное число в списке. Для этого инициализируем переменную минимального элемента первым числом списка, а затем последовательно сравниваем его со всеми числами, обновляя значение минимального при необходимости.

2. Поиск подходящих пар

  • Проходим по списку чисел, формируя пары из соседних элементов. Каждая пара состоит из текущего числа и следующего за ним.
  • Проверяем условие для каждой пары: остаток от деления хотя бы одного числа из пары на 16 должен быть равен минимальному элементу списка.
  • Если пара удовлетворяет условию, увеличиваем счётчик подходящих пар. Также вычисляем сумму чисел этой пары и, если она превышает текущую максимальную сумму, обновляем значение максимальной суммы.

3. Вывод результата

  • После завершения обработки всех пар выводим два значения:
    1.    Количество пар, которые удовлетворяют заданному условию.
    2.    Наибольшую сумму среди всех подходящих пар.


2. Демоверсия 2024

В файле содержится последовательность натуральных чисел, каждое из которых не превышает 100 000. Определите количество троек элементов последовательности, в которых ровно два из трёх элементов являются трёхзначными числами, а сумма элементов тройки не больше максимального элемента последовательности, оканчивающегося на 13. Гарантируется, что в последовательности есть хотя бы одно число, оканчивающееся на 13. В ответе запишите количество найденных троек чисел, затем максимальную из сумм элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.

1. Чтение и запись данных

  • Открываем файл 17_2.txt для чтения. Извлекаем каждую строку из файла, удаляем символы новой строки, если они есть, и преобразуем полученные строки в целые числа. Все числа добавляем в список lines.
  • Параллельно определяем максимальное число из списка, которое делится на 100 с остатком 13. Если такое число найдено, оно сохраняется в переменной max_end_13.

2. Поиск подходящих троек

  • Проходим по списку чисел, формируя тройки соседних элементов: текущий, следующий и через один.
  • Для каждой тройки проверяем, сколько из трех чисел являются трехзначными (от 100 до 999 включительно). Если ровно два числа из тройки трехзначные, проверяем, чтобы сумма всех трех чисел была меньше, чем найденное ранее максимальное число max_end_13.
  • Если тройка удовлетворяет этим условиям, увеличиваем счетчик подходящих троек. Также вычисляем сумму этой тройки. Если она больше текущего максимального значения суммы, обновляем значение максимальной суммы.

3. Вывод результата

  • После завершения перебора всех троек выводим два результата:
    o    Количество подходящих троек (значение счетчика).
    o    Наибольшую сумму среди всех подходящих троек.

3. Основная волна 07.06.2024

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

1. Чтение и запись данных

  • Открываем файл 17_3.txt для чтения. Считываем все строки файла в список lines.
  • Затем по очереди обрабатываем каждую строку из этого списка: удаляем символ новой строки, преобразуем строку в целое число и добавляем его в список data.
  • После этого находим минимальное число в списке data. Для этого изначально берём первый элемент как минимальный и затем сравниваем его с каждым числом в списке, обновляя минимальное значение, если встречаем меньшее число.

2. Поиск подходящих пар

  • Начинаем перебирать список чисел, формируя пары из текущего элемента и следующего за ним.
  • Для каждой пары проверяем условие: остаток от деления хотя бы одного из чисел пары на 55 должен быть равен минимальному числу, найденному ранее. Если это условие выполняется, фиксируем, что пара подходит.
  • Если пара подходит, увеличиваем счётчик подходящих пар. Также вычисляем сумму чисел в этой паре.
  • Затем проверяем: если сумма этой пары меньше текущей минимальной суммы, обновляем значение минимальной суммы.

3. Вывод результата

  • После завершения обработки всех пар выводим два значения:
    o    Количество подходящих пар.
    o    Минимальную сумму среди всех подходящих пар.

4. Основная волна 04.07.2024

В файле содержится последовательность целых чисел. Её элементы могут принимать целые значения от –100 000 до 100 000 включительно. Определите количество пар последовательности, в которых элементы не равны, а абсолютное значение их разности делится на минимальный положительный элемент последовательности, кратный 41. Гарантируется, что такой элемент в последовательности есть.

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

1. Чтение и запись данных

  • Открываем файл 17_4.txt для чтения и считываем все строки файла в список lines.
  • Преобразуем каждую строку из списка в целое число (удаляя символы новой строки, если они есть) и добавляем в новый список numbers.
  • Из списка numbers определяем наименьшее положительное число, которое делится на 41. Для этого изначально переменная для минимального положительного числа (min_positive) устанавливается как None. Затем перебираем числа, проверяя, являются ли они положительными и делятся ли на 41 без остатка. Если число подходит, обновляем значение min_positive.

2. Поиск подходящих пар

  • Перебираем все соседние числа из списка numbers, формируя пары из текущего элемента и следующего за ним.
  • Для каждой пары проверяем два условия:
    1.    Числа пары не равны между собой.
    2.    Разница модулей чисел пары делится на min_positive без остатка.
  • Если пара удовлетворяет этим условиям:
    o    Увеличиваем счётчик подходящих пар.
    o    Вычисляем сумму чисел пары.
    o    Если эта сумма больше текущей максимальной суммы (max_sum), обновляем значение максимальной суммы.

3. Вывод результата

  • После обработки всех пар выводим два результата:
    1.    Общее количество подходящих пар.
    2.    Максимальную сумму среди всех таких пар.

5. Демоверсия 2023

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

1. Чтение и запись данных

  • Открываем файл 17_5.txt для чтения, считываем строки в список lines и преобразуем каждую строку в целое число, добавляя числа в список numbers.
  • После формирования списка находим максимальный элемент, который оканчивается на цифру 3. Для этого перебираем все числа, проверяя, заканчивается ли абсолютное значение числа на 3. Если условие выполняется, обновляем максимальный элемент (max_element_with_3).

2. Поиск подходящих пар

  • Перебираем соседние числа в списке, формируя пары из текущего элемента и следующего за ним.
  • Для каждой пары проверяем:
    1.    Либо первое число оканчивается на 3, либо второе, но не оба сразу.
    2.    Сумма квадратов чисел пары должна быть больше либо равна квадрату найденного максимального числа, которое оканчивается на 3.
  • Если пара удовлетворяет условиям:
    o    Увеличиваем счётчик подходящих пар.
    o    Вычисляем сумму квадратов чисел пары.
    o    Если сумма квадратов больше текущей максимальной суммы квадратов, обновляем это значение.

3. Вывод результата

  • После обработки всех пар выводим два значения:
    1.    Общее количество пар, удовлетворяющих условиям.
    2.    Максимальную сумму квадратов чисел среди таких пар.

6. Основная волна 2023 I

В файле содержится последовательность натуральных чисел. Элементы последовательности могут принимать целые значения от 1 до 100 000 включительно. Определите количество троек последовательности, в которых только одно из чисел является четырёхзначным, а сумма элементов тройки не меньше максимального элемента последовательности, оканчивающегося на 15. В ответе запишите количество найденных троек, затем максимальную из сумм элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.

1. Чтение и запись данных

  • Открываем файл 17_6.txt для чтения и считываем строки в список lines.
  • Преобразуем каждую строку в целое число, удаляя символ новой строки, и добавляем числа в список numbers.
  • Находим максимальный элемент в списке, который заканчивается на 15. Для этого перебираем числа из списка, проверяя, заканчиваются ли они на 15. Если число удовлетворяет условию и больше текущего максимального, обновляем значение максимального элемента (max_element_with_15).

2. Поиск подходящих троек

  • Перебираем все возможные тройки соседних чисел из списка.
  • Для каждой тройки проверяем:
    1.    Сколько чисел из тройки являются четырёхзначными (от 1000 до 9999 включительно). Подсчитываем такие числа с помощью счётчика.
    2.    Если ровно одно число в тройке четырёхзначное, проверяем, чтобы сумма чисел тройки была больше либо равна найденному максимальному элементу, заканчивающемуся на 15.
  • Если оба условия выполняются:
    o    Увеличиваем счётчик подходящих троек.
    o    Вычисляем сумму чисел в тройке. Если эта сумма больше текущей максимальной суммы (max_sum), обновляем значение максимальной суммы.

3. Вывод результата

  • После завершения обработки всех троек выводим два значения:
    1.    Общее количество троек, которые удовлетворяют условиям.
    2.    Максимальную сумму чисел среди таких троек.

7. Досрочная волна I

В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от 1 до 100 000 включительно. Определите количество пар последовательности, в которых только одно число трёхзначное, и сумма элементов пары кратна минимальному трёхзначному значению последовательности, оканчивающемуся на 5. В ответе запишите два числа: сначала количество найденных пар, затем минимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.

1. Чтение и запись данных

  • Открываем файл 17_7.txt и считываем все строки в список lines.
  • Преобразуем каждую строку из списка в целое число (удаляем символ новой строки) и добавляем в список numbers.
  • Находим минимальное трёхзначное число, которое заканчивается на 5. Для этого перебираем все числа из списка, проверяя два условия:

1.    Число должно быть трёхзначным (от 100 до 999).
2.    Число должно заканчиваться на 5. Если число подходит, обновляем минимальное значение, сравнивая его с текущим минимальным.

2. Поиск подходящих пар

  • Перебираем все соседние числа в списке, формируя пары.
  • Для каждой пары проверяем:
    1.    Ровно одно из чисел пары должно быть трёхзначным. Это проверяется отдельно для каждого числа в паре.
    2.    Сумма чисел пары должна быть кратна минимальному трёхзначному числу, которое заканчивается на 5.
  • Если пара удовлетворяет этим условиям:
    o    Увеличиваем счётчик подходящих пар.
    o    Вычисляем сумму чисел пары. Если эта сумма меньше текущей минимальной суммы, обновляем значение минимальной суммы.

3. Вывод результата

  • После завершения обработки всех пар выводим два значения:
    1.    Общее количество подходящих пар.
    2.    Минимальную сумму чисел среди всех таких пар.

8. Демоверсия 2022

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

Например, для последовательности из пяти элементов: 6; 2; 9; –3; 6 – ответ: 4 11

1. Чтение и запись данных

  • Открываем файл 17_8.txt и считываем все строки в список lines.
  • Каждую строку из списка преобразуем в целое число, удаляя символ новой строки, и добавляем полученные числа в список numbers.

2. Поиск подходящих пар

  • Проходим по всем соседним парам чисел в списке.
  • Для каждой пары проверяем условие: хотя бы одно из чисел пары должно делиться на 3 без остатка.
  • Если пара удовлетворяет условию:
    o    Увеличиваем счётчик подходящих пар.
    o    Вычисляем сумму чисел пары и сравниваем её с текущей максимальной суммой.
    o    Если сумма пары больше текущей максимальной суммы (или если максимальная сумма ещё не установлена), обновляем значение максимальной суммы.

3. Вывод результата

  • После завершения обработки всех пар выводим:
    1.    Общее количество пар, удовлетворяющих условию.
    2.    Максимальную сумму чисел среди всех таких пар.

Советы для решения задачи 17:

1.    Обработка данных:

  • Убедитесь, что данные корректно считываются и преобразуются в числа.
  • Проверьте, чтобы не выходить за границы списка при работе с соседними элементами.

2.    Использование циклов:

  • Используйте циклы с индексами, например, for i in range(len(words) — 1), чтобы избежать ошибок выхода за пределы списка.

3.    Предварительные вычисления:

  • Найдите заранее минимальные или максимальные элементы последовательности, чтобы ускорить проверки внутри цикла.

4.    Встроенные функции:

  • Используйте функции max, min, списковые включения и другие инструменты Python для сокращения и повышения читаемости кода.

5.    Проверка условий:

  • Уделите внимание проверке условий задачи, чтобы алгоритм работал корректно.

18 задание
Задание №18 ЕГЭ по информатике проверяет наше умение работать с электронными таблицами для обработки целочисленных данных. Это задание относится к категории повышенной сложности, где нужно не только понимать алгоритм, но и уметь применять его на практике.

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

Этот тип задания проверяет не только понимание алгоритмов, но и умение логически мыслить, анализировать данные и работать с формулами в электронных таблицах. Успешное решение требует точного понимания условий задачи и последовательного выполнения операций.

Следуя правильному алгоритму и анализируя данные, вы легко справитесь с этой задачей!

Давайте ближе познакомимся с Excel и изучим формулы, которые пригодятся для успешного выполнения этого задания.

Интерфейс Excel выглядит как таблица с верхней панелью инструментов, где собраны различные функции и настройки.

Для начала важно понять, как работать с самой таблицей. Одно из базовых действий — это ввод данных в отдельные ячейки.

В этом примере в ячейку B2 было введено слово «мир», а в ячейку C4 — число 3. Навык определения координат ячеек играет важную роль при выполнении задач.

Одним из основных инструментов, который вы будете часто использовать в Excel, является знак равенства.

В примере выше мы использовали знак равно, а затем добавили простое арифметическое выражение. Однако возможности этого символа на этом не заканчиваются.

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

Еще один важный элемент при решении задач — это использование функций.

Как вызвать функцию:

1.    Напишите знак «=» и введите название функции, затем в скобках укажите необходимые аргументы. После нажатия Enter результат функции появится в ячейке.

2. Вы нажимаете на кнопку функций

И ищете нужную вам функцию

Функций в Excel очень много и все они уникальны, но для решения 9го задания ЕГЭ по информатике нам нужны будут всего несколько:

1)    Функция =СУММ() – суммирует все выделенные числа;

2)    Функции =МАКС() и =МИН() находят максимальный и минимальный элемент соответственно;

3)    Функция =СЧЁТЕСЛИ() в Excel подсчитывает количество ячеек, соответствующих заданному условию;

4)    =ЕСЛИ() проверяет, выполняются ли заданные условия в выбранном диапазоне таблицы;

5)    =НАИБОЛЬШИЙ() и =НАИМЕНЬШИЙ() — формулы для нахождения наибольшего и наименьшего значений в Excel. В этой формуле мы указываем диапазон и аргумент, который означает, «позицию в рейтинге» самых больших (маленьких) чисел.

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

Также для решения 18го задания ЕГЭ по информатике нам понадобится инструмент «Найти и заменить»: он позволяет быстро находить и заменять данные в таблице. С его помощью можно, например:

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

Чтобы использовать этот инструмент, нужно в правом верхнем углу выбрать «Найти и выделить», затем нажать на «заменить»:

В открывшемся окне в первой строке мы пишем, что хотим найти, во второй – на что хотим заменить (в нашей задаче чаще всего мы будем искать «МАКС» и заменять на «МИН»):

Перейдём к примеру решения прототипов задач:

 

Разберём задачу №12 ЕГЭ 2025 из демоверсии ФИПИ:

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

Перед каждым запуском Робота в каждой клетке квадрата лежит монета достоинством от 1 до 100. Посетив клетку, Робот забирает монету с собой; это также относится к начальной и конечной клеткам маршрута Робота. В «угловых» клетках поля — тех, которые справа и снизу ограничены стенами, Робот не может продолжать движение, поэтому накопленная сумма считается итоговой. Таких конечных клеток на поле может быть несколько, включая правую нижнюю клетку поля.

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

В ответе укажите два числа: сначала максимальную сумму, затем минимальную.

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

18_1.xls

Решение:

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

2.  Создаем дополнительную таблицу: копируем поле размером 20 × 20 и вставляем его в соседний диапазон справа. Это будет наша вспомогательная таблица, в которой мы будем выполнять расчеты для определения максимальных и минимальных сумм.

3.  Очищаем значения в вспомогательной таблице: мы удаляем значения монет в ячейках вспомогательной таблицы (выделяем нужный диапазон и нажимаем Delete на клавиатуре), так как эти ячейки будут заполняться формулами для выполнения расчетов.

4.  Заполняем начальную клетку, первую строку и первый столбец.

Мы начинаем с заполнения начальной клетки вспомогательной таблицы (ячейка V1). В неё вставляем формулу, которая копирует значение монет из соответствующей ячейки исходной таблицы: =A1. Это значение станет первой суммой монет, которые Робот собрал, начиная движение с этой точки.

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

  • Для первой строки: мы заполняем каждую ячейку суммой монет из предыдущей (левой) ячейки и текущей. Вводим формулу =V1 + B1 в ячейку W1 и протягиваем её вправо до конца строки.
  • Для первого столбца: каждая ячейка заполняется суммой монет из предыдущей (верхней) ячейки и текущей. Вводим формулу =V1 + A2 в ячейку V2 и протягиваем её вниз до конца столбца.

В итоге вспомогательная таблица начнёт заполняться значениями, которые показывают суммы монет, собранных Роботом в первой строке и первом столбце.

5.  Заполняем остальные ячейки для поиска максимальной суммы.

Теперь наша задача — определить максимальную сумму монет, которые Робот может собрать, достигнув конечных ячеек. Для этого мы будем учитывать, что Робот может попасть в каждую клетку либо слева, либо сверху, и выберем максимальное значение из этих двух вариантов.

  • Для каждой ячейки мы определяем максимальную сумму, прибавляя значение текущей ячейки из исходной таблицы к наибольшей из двух возможных сумм: из клетки слева или сверху.
  • В ячейку W2 вспомогательной таблицы вводим формулу: =МАКС(W1; V2) + B2. Эта формула берёт максимальное значение из ячеек W1 (сверху) и V2 (слева), затем добавляет значение текущей клетки из исходной таблицы.

После этого протягиваем формулу по всему остальному полю вспомогательной таблицы. Таким образом, мы заполняем все ячейки значениями, соответствующими максимальной сумме монет, которые Робот может собрать, двигаясь к каждой клетке. Формулу нужно протянуть на весь диапазон, выделенный для расчетов (показан оранжевым цветом). После того, как вы растянули формулу, нажмите на «Параметры автозаполнения» и выберите «Заполнить только значения», чтобы стенки таблички сохранились:

6.    Корректируем формулы для ячеек возле стен.

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

  • В ячейки справа от стен Робот может попасть только сверху.
  • В ячейки снизу от стен Робот может попасть только слева.

Корректировка формул:

1)    Для ячеек справа от стен:

  • Выбираем самую верхнюю ячейку справа от стены (например AF4)
  • В эту ячейку мы можем попасть только сверху, тогда она будет равна сумме AF3 и ячейке, соответствующей AF4, в исходной таблице (то есть K4)
  • Протягиваем формулу вниз вдоль всех ячеек, расположенных справа от стены, например, от AF4 до AF8. Не забываем про «Параметры автозаполнения»
  • Повторяем аналогичные действия для всех рядов, расположенных справа от стен.

2)    Для ячеек снизу от стен:

  • Выбираем самую левую ячейку снизу от стены (например AB4)
  • В эту ячейку мы можем попасть только слева, тогда она будет равна сумме AA4 и ячейке, соответствующей AB4, в исходной таблице (то есть G4)
  • Протягиваем формулу справа вдоль всех ячеек, расположенных снизу от стены, например, от AB4 до AE4. Не забываем про «Параметры автозаполнения»
  • Повторяем аналогичные действия для всех рядов, расположенных справа от стен.

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

7.    Теперь определяем максимальную сумму среди всех конечных клеток, выделенных жёлтым цветом. Например, в данной задаче максимальная сумма составляет 2671 монета и находится она в ячейке AO20.

8.    Поиск минимальной суммы монет:
Для поиска минимальной суммы заменим во всех формулах функцию МАКС на МИН, воспользовавшись инструментом «Найти и заменить».

Затем найдём минимальную сумму среди конечных клеток. В данной задаче минимальная сумма составляет 419 монет и находится она в ячейке Y9.

В ответе укажите два числа: сначала максимальную сумму, затем минимальную, тогда в данном случае это будет: 2671 и 419

Ответ: 2671 419

 

Дальше разберём задание из варианта досрочной волны (I) 2023-го года:

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

Перед каждым запуском Робота в каждой клетке квадрата лежит монета достоинством от 1 до 100. Посетив клетку, Робот забирает монету с собой; это также относится к начальной и конечной клеткам маршрута Робота.

Определите максимальную и минимальную денежные суммы, которые может собрать Робот, пройдя из левой верхней клетки в правую нижнюю. В ответе укажите два числа — сначала максимальную сумму, затем минимальную.

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

18_2.xls

Решение:

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

2.    Создаем дополнительную таблицу: копируем наше поле и вставляем его в соседний диапазон справа. Это будет таблица, в которой мы будем выполнять расчеты, для наглядности выделим клетку начала движения жёлтым, а конечную клетку зелёным:

3.    Очищаем правую вспомогательную таблицу от значений, копируем в левую верхнюю ячейку значение A1, и для первой строки мы заполняем каждую ячейку суммой монет из предыдущей (левой) ячейки и текущей. Вводим формулу =V1 + B1 в ячейку W1 и протягиваем её вправо до конца строки. Для первого столбца: каждая ячейка заполняется суммой монет из предыдущей (верхней) ячейки и текущей. Вводим формулу =V1 + A2 в ячейку V2 и протягиваем её вниз до конца столбца

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

В ячейку W2 вспомогательной таблицы вводим формулу: =МАКС(W1; V2) + B2. Эта формула берёт максимальное значение из ячеек W1 (сверху) и V2 (слева), затем добавляет значение текущей клетки из исходной таблицы. Растягиваем эту формулу на всю таблицу (не забываем про «Параметры автозаполнения»):

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

6.    Запоминаем ответ, можно записать его в отдельную ячейку, теперь ищем минимальное значение: используем инструмент «Найти и заменить».

7.    Нас просят указать сначала максимальную сумму, затем минимальную, тогда пишем 1102 и 1029

Ответ: 1102 1029

 

Следующий прототип посмотрим из основной волны 08.06.2024:

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

Перед каждым запуском Робота в каждой клетке квадрата лежит монета достоинством от 1 до 100. Посетив клетку, Робот забирает монету с собой; это также относится к начальной и конечной клеткам маршрута Робота. В «угловых» клетках поля — тех, которые справа и снизу ограничены стенами, Робот не может продолжать движение, поэтому накопленная сумма считается итоговой. Таких конечных клеток на поле может быть несколько, включая правую нижнюю клетку поля.

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

В ответе укажите два числа: сначала максимальную сумму, затем минимальную.

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

18_3.xls

Решение:

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

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

3. Для первой строки заполняем каждую ячейку, складывая монеты из предыдущей (слева) ячейки и текущей. Вводим формулу =V1 + B1 в ячейку W1 и протягиваем её вправо до конца строки.
Для первого столбца: каждая ячейка заполняется суммой монет из предыдущей (сверху) ячейки и текущей. Вводим формулу =V1 + A2 в ячейку V2 и протягиваем её вниз до конца столбца.

4. Для каждой ячейки вычисляем максимальную сумму, добавляя значение текущей ячейки из исходной таблицы к максимальному из двух вариантов: из клетки слева или сверху.

В ячейку W2 вспомогательной таблицы вводим формулу: =МАКС(W1; V2) + B2. Эта формула сравнивает значения в ячейках W1 (сверху) и V2 (слева), выбирает максимальное и добавляет значение текущей ячейки из исходной таблицы. Протягиваем эту формулу на весь диапазон таблицы, не забываем про «Параметры автозаполнения».

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

6.    Видно, что наибольшим является значение в клетке AO20 (2463)

7.    Запоминаем ответ, можно записать его в отдельную ячейку, теперь ищем минимальное значение: используем инструмент «Найти и заменить»:

8.    Минимальный является значение в ячейке Y16 (669); в ответ нас просят записать сначала максимальную сумму, затем минимальную

Ответ: 2463 669

 

Разберём задачу №12 ЕГЭ 2024 из варианта основной волны 04.07:

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

Перед каждым запуском Робота в каждой клетке квадрата лежит монета достоинством от 1 до 100. Посетив клетку, Робот забирает монету с собой; это также относится к начальной и конечной клеткам маршрута Робота. В «угловых» клетках поля — тех, которые справа и снизу ограничены стенами, Робот не может продолжать движение, поэтому накопленная сумма считается итоговой. Таких конечных клеток на поле может быть несколько, включая правую нижнюю клетку поля.

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

В ответе укажите два числа: сначала максимальную сумму, затем минимальную.

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

18_4.xls

Решение:

1.  Анализируем задание:

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

2.  Создаем вспомогательную таблицу:Копируем поле с исходными данными и вставляем его в соседний свободный диапазон справа. Очищаем значения этой таблицы и переносим в неё значение из верхней левой клетки (A1). Чтобы не запутаться, выделяем начальную клетку жёлтым цветом, а конечные клетки — зелёным:

3.  Заполняем первую строку и первый столбец:

  • Для первой строки: считаем сумму монет из предыдущей ячейки (слева) и текущей. В ячейку W1 вставляем формулу: =V1 + B1, после чего протягиваем её вправо до конца строки.
  • Для первого столбца: сумма в каждой ячейке определяется сложением значений из предыдущей ячейки (сверху) и текущей. В ячейку V2 вводим формулу: =V1 + A2 и протягиваем её вниз до конца столбца.

4.  Вычисляем максимальные суммы для всех клеток:Для остальных ячеек используем формулу, которая учитывает наибольшую сумму из двух возможных путей: из клетки сверху или из клетки слева. В ячейку W2 вставляем формулу: =МАКС(W1; V2) + B2. Эта формула добавляет значение текущей клетки к максимальной сумме из соседних. Протягиваем формулу по всей вспомогательной таблице (помним про кнопку «Заполнить только значения»):

5.    Корректируем формулы для ячеек возле стен:

Если клетка находится рядом со стеной, в неё можно попасть только с одной стороны:

  • Для клеток справа от стен: корректируем формулу так, чтобы учитывалась только сумма из верхней ячейки.
  • Для клеток снизу от стен: учитываем только сумму из левой ячейки.Для удобства выделяем такие клетки другим цветом, чтобы быстрее их найти и внести изменения.

6.    Находим максимальную сумму:Смотрим конечные клетки вспомогательной таблицы. Наибольшая сумма монет будет находиться в одной из этих клеток: в нашем случае в правой нижней. Записываем это значение (2411).

7.  Ищем минимальную сумму:Теперь определяем минимальную сумму, которую может собрать Робот. Для этого можно воспользоваться инструментом «Найти и заменить».

Минимальным значением будет 457

8.  Записываем ответ:

Сначала указываем максимальную сумму, затем минимальную.

Ответ: 2411 457

Основная волна 2023 (III):

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

Перед каждым запуском Робота в каждой клетке квадрата лежит монета достоинством от 1 до 100. Посетив клетку, Робот забирает монету с собой; это также относится к начальной и конечной клеткам маршрута Робота.

В «угловых» клетках поля — тех, которые справа и снизу ограничены стенами, Робот не может продолжать движение, поэтому накопленная сумма считается итоговой. Таких конечных клеток на поле может быть несколько, включая правую нижнюю клетку поля.

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

В ответе укажите два числа — сначала максимальную сумму, затем минимальную.

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

18_5.xls

Решение:

1.    Изучаем задание:Открываем файл с данными и читаем условия. Задача состоит в том, чтобы найти максимальную и минимальную сумму монет, которые Робот сможет собрать, начиная движение из верхней левой клетки и заканчивая в одной из конечных клеток (справа или снизу, ограниченных стенами). Для удобства выделяем начальную клетку жёлтым цветом, а конечные — зелёным.

2.    Создаем вспомогательную таблицу:Копируем исходное поле с данными и вставляем его в соседний диапазон справа. Эта таблица понадобится для выполнения расчетов. Очищаем все значения внутри неё, так как они будут заполнены формулами. Начальную клетку отмечаем, чтобы наглядно видеть начало маршрута.

3.    Заполняем первую строку и первый столбец:В начальную клетку вспомогательной таблицы вставляем формулу, копирующую значение из соответствующей ячейки исходной таблицы (A1). Для заполнения остальных ячеек:

  • В первой строке каждая ячейка вычисляется как сумма текущего значения и значения из ячейки слева. Вводим формулу =V1 + B1 в ячейку W1 и протягиваем её вправо.
  • В первом столбце каждая ячейка заполняется суммой текущего значения и значения из верхней ячейки. Вводим формулу =V1 + A2 в ячейку V2 и протягиваем её вниз.

4.    Заполняем остальные ячейки для максимальной суммы:Для всех остальных ячеек таблицы заполняем значение, выбирая максимальную сумму из двух возможных путей: сверху или слева. Формула в ячейке W2: =МАКС(W1; V2) + B2. Протягиваем формулу на весь диапазон таблицы, чтобы каждая ячейка отображала максимальную сумму монет, собранных Роботом, если он попал в эту клетку.

5.    Корректируем формулы для клеток возле стен:Рядом со стенами Робот может попадать в ячейки только с одной стороны, поэтому корректируем формулы:

  • Для клеток справа от стен: берём значение только из верхней ячейки.
  • Для клеток снизу от стен: учитываем только значение из левой ячейки.

Для удобства выделяем клетки возле стен другим цветом и исправляем формулы вручную.

6.    Находим максимальную сумму:

Смотрим значения в конечных клетках (зелёных). Максимальная сумма монет будет самой большой среди этих ячеек. Максимальная сумма будет 2071 монета, она расположена в клетке AO20.

7.  Ищем минимальную сумму:Для нахождения минимальной суммы заменяем в формулах функцию МАКС на МИН с помощью инструмента «Найти и заменить». Затем пересчитываем таблицу и определяем минимальную сумму в конечных клетках. Минимальная сумма составляет 649 монет и находиться в клетке AM12.

8.  Записываем ответ:В ответе указываем сначала максимальную сумму, затем минимальную. В данном случае: 2071 и 649.

Ответ: 2071 649

 

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

Квадрат разлинован на N×N клеток (1 < N < 30). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из трёх команд: вправо, вверх или вправо-вверх. По команде вправо Робот перемещается в соседнюю правую клетку, по команде вверх — в соседнюю верхнюю клетку, а по команде вправо-вверх — в соседнюю клетку по диагонали вправо-вверх.

Квадрат ограничен внешними стенами. Между соседними клетками квадрата также могут быть внутренние стены. Сквозь стену Робот пройти не может. Движение по диагонали допустимо, если попасть в целевую клетку возможно последовательным выполнением команд вправо и вверх либо вверх и вправо.

Перед каждым запуском Робота в каждой клетке квадрата лежит монета достоинством от 10 до 120. Посетив клетку, Робот забирает монету с собой; это также относится к начальной и конечной клеткам маршрута Робота.

В «угловых» клетках поля — тех, которые справа и сверху ограничены стенами, Робот не может продолжать движение, поэтому накопленная сумма считается итоговой. Таких конечных клеток на поле может быть несколько, включая правую верхнюю клетку поля.

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

В ответе укажите два числа: сначала максимальную сумму, затем минимальную.

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

18_6.xls

Решение:

1.  Анализируем задание:Открываем файл с данными и изучаем условие. Нам нужно определить максимальную и минимальную сумму монет, которые Робот может собрать, начиная движение из левой нижней клетки и заканчивая в одной из конечных клеток (которые справа и сверху ограничены стенами). Для удобства выделяем начальную клетку жёлтым цветом, а конечные клетки — зелёным.

2.  Создаем вспомогательную таблицу.Копируем исходное поле с данными и вставляем его в соседний диапазон справа. Эта таблица будет использоваться для выполнения расчетов. Удаляем все значения в этой таблице, так как её ячейки будут заполняться формулами. Обозначаем начальную клетку, чтобы ясно видеть стартовую точку.

3. Заполняем первую строку и первый столбец.

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

  • В первой строке: значение каждой ячейки равно сумме текущей ячейки и ячейки слева. Вводим формулу =N17 + B17 в O17 и протягиваем её вправо.
  • В первом столбце: значение каждой ячейки определяется как сумма текущей ячейки и ячейки сверху. Вводим формулу =N17 + A16 в N16 и протягиваем её вверх.

4. Заполняем оставшиеся ячейки для нахождения максимальной суммы.Для всех других ячеек таблицы вычисляем значение, выбирая максимальную сумму из трёх возможных вариантов: снизу, слева или снизу слева (по диагонали). В ячейку O16 вводим формулу: =МАКС(N16; O17; N17) + B16. Затем протягиваем формулу на весь диапазон таблицы, чтобы каждая ячейка отображала максимальную сумму монет, которые Робот может собрать, попав в эту клетку.

5. Заметим, что в зону, выделенной красным, мы попасть вообще не сможем, удалим оттуда значения:

6.    Исправляем формулы для клеток возле стен.

Рядом со стенами Робот может попадать в некоторые клетки не со всех сторон. Поэтому:

  • Для клеток справа от стен: значение берётся только из нижней ячейки.
  • Для клеток сверху от стен: используется только значение из левой ячейки.Для удобства выделяем клетки возле стен другим цветом и корректируем формулы вручную.
  • Но помним, что в некоторые клетки возле стен можно попасть и по диагонали, поэтому для них мы будем брать максимальное из двух значений (по диагонали и снизу (или слева)). Такие клетки тоже выделим другим цветом. Например, для O13 формула будет =МАКС(N13; N14) + B13

7.    Определяем максимальную сумму.

Смотрим значения в конечных клетках (зелёных). Максимальное значение из этих клеток будет наибольшей суммой монет, которые может собрать Робот.

Здесь максимальная сумма — 2152 монеты, находится в клетке Y1.

8.    Определяем минимальную сумму.Для нахождения минимальной суммы используем инструмент «Найти и заменить», чтобы заменить функцию МАКС на МИН во всех формулах. Пересчитываем таблицу и смотрим минимальные значения в конечных клетках. Здесь минимальной суммой будет 470 (клетка Q6)

9.    Записываем результат.В ответе сначала указываем максимальную сумму, затем минимальную.

Ответ: 2152 470

 

Разберём задачу №12 с ещё одним небольшим усложнением:

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

Перед каждым запуском Робота в каждой клетке квадрата лежит монета достоинством от 1 до 100. Посетив клетку, Робот забирает монету с собой; это также относится к начальной и конечной клеткам маршрута Робота.

В «угловых» клетках поля — тех, которые слева и сверху ограничены стенами, Робот не может продолжать движение, поэтому накопленная сумма считается итоговой. Таких конечных клеток на поле может быть несколько, включая левую верхнюю клетку поля.

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

В ответе укажите два числа — сначала максимальную сумму, затем минимальную.

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

18_7.xls

Решение:

1.  Анализируем задание.Открываем файл с данными и изучаем условия. Нам нужно найти максимальную и минимальную сумму монет, которые Робот может собрать, начиная движение из правой нижней клетки и заканчивая в одной из конечных клеток (сверху и слева стена). Для удобства выделяем начальную клетку жёлтым цветом, а конечные клетки — зелёным.

2.  Создаем вспомогательную таблицу.Копируем исходное поле с данными и вставляем его в соседний диапазон справа. Это будет таблица, где мы будем выполнять расчёты. Очищаем все значения в таблице, так как ячейки будут заполнены формулами.

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

  • В последней строке: каждая ячейка вычисляется как сумма текущей ячейки и значения из ячейки справа. Например, вводим формулу =AO20 + S20 в ячейку AN20 и протягиваем её влево.
  • В последнем столбце: каждая ячейка вычисляется как сумма текущей ячейки и значения из ячейки ниже. Например, вводим формулу =AO20 + T19 в ячейку AO19 и протягиваем её вверх.

4.  Заполняем остальные ячейки для нахождения максимальной суммы.Для всех остальных ячеек таблицы заполняем значения, выбирая максимальную сумму из двух возможных путей: из клетки справа или из клетки ниже. Например, в ячейке AN19 вводим формулу: =МАКС(AN20; AO19) + S19. Затем протягиваем формулу на весь диапазон таблицы, чтобы каждая ячейка отображала максимальную сумму монет, собранных Роботом при попадании в эту клетку.

5.  Корректируем формулы для клеток возле стен.Клетки, расположенные рядом со стенами, требуют корректировки формул, так как Робот может попасть в них только с одной стороны:

  • Для клеток слева от стен: используем значение только из ячейки снизу.
  • Для клеток сверху от стен: учитываем значение только из ячейки справа. Для удобства выделяем такие клетки другим цветом и вручную корректируем формулы.

6.  Находим максимальную сумму.Смотрим значения в конечных клетках (зелёных). Самое большое значение среди них будет максимальной суммой монет, которые может собрать Робот.

7.  Ищем минимальную сумму.Чтобы найти минимальную сумму, заменяем функцию МАКС на МИН во всех формулах с помощью инструмента «Найти и заменить». Пересчитываем таблицу и определяем минимальное значение среди конечных клеток.

8.  Записываем результат.В ответе указываем сначала максимальную сумму, затем минимальную. Для данной задачи это: 2632 и 737

Ответ: 2632 737

 

Ну и заключительное упражнения для закрепления материала:

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

Перед каждым запуском Робота в каждой клетке квадрата лежит монета достоинством от 1 до 100. Посетив клетку, Робот забирает монету с собой; это также относится к начальной и конечной клеткам маршрута Робота. В «угловых» клетках поля (тех, которые слева и снизу ограничены стенами) Робот продолжать движение не может, поэтому накопленная сумма считается итоговой. Таких конечных клеток на поле может быть несколько, включая левую нижнюю клетку поля. При разных запусках итоговые накопленные суммы могут различаться.

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

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

18_8.xls

Решение:

1.  Единственное отличие от классической задачи данного типа заключается в том, что Робот начинает из правого верхнего угла и движется влево и вниз. Выполняем уже знакомый нам алгоритм: копируем таблицу, удаляем числовые значения, начальную и итоговые клетки отмечаем жёлтым и зелёными цветами, переносим начальную клетку из исходной таблицы, столбец и строку получаем обычной суммой предыдущих значений и значений, соответствующих данной клетке, но в исходной таблице:

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

3.  Легко заметить максимальное значение: 1854

4.  Чтобы найти минимальную сумму, заменяем функцию МАКС на МИН во всех формулах с помощью инструмента «Найти и заменить». Пересчитываем таблицу и определяем минимальное значение среди конечных клеток

Ответ: 1854 623

Задание №18 ЕГЭ по информатике — это задание продвинутого уровня сложности, проверяющее навыки работы с электронными таблицами, алгоритмическое мышление и умение анализировать данные. Основная цель — корректно определить максимальные и минимальные суммы монет, которые может собрать робот, следуя заданным условиям движения.

Основные аспекты для успешного выполнения:

1.  Четкое понимание условий задачи.

Перед началом решения важно внимательно изучить условие, чтобы понять, откуда начинается движение робота, какие команды он может выполнять, и где расположены конечные клетки. Это поможет правильно выделить стартовые и конечные точки в таблице.

2.  Создание вспомогательной таблицы.Вспомогательная таблица — это ключевой инструмент для вычислений. Убедитесь, что все значения в ней правильно очищены и заполнены, а начальная и конечные клетки выделены для удобства.

3.  Пошаговое заполнение таблицы.

  • Начните с заполнения строк и столбцов, для которых робот может двигаться только в одном направлении (вверх, вниз, вправо, влево). Используйте базовые формулы сложения для расчета значений.
  • Для остальных клеток применяйте функции МАКС() и МИН(), чтобы выбрать оптимальный путь.

4.  Корректировка формул возле стен.Учитывайте ограничения на движение возле стен. Для таких клеток робот может попасть только с одной стороны, что требует корректировки формул. Используйте цвета для выделения этих клеток и изменения логики их заполнения.

5.    Использование инструментов Excel.

  • Функция «Найти и заменить». Она ускоряет процесс замены функции МАКС на МИН (и наоборот) при поиске минимальной суммы.
  • Копирование формул. Внимательно следите за диапазонами при копировании формул, чтобы избежать ошибок.

Лайфхаки для решения:

1.  Выделяйте клетки визуально.Начальную клетку можно выделить зелёным, а конечные — жёлтым. Это облегчит ориентирование в таблице и проверку результатов.

2.  Используйте промежуточные проверки.На каждом этапе выполнения задачи проверяйте, правильно ли заполнены значения в промежуточных клетках, чтобы исключить ошибки на ранних этапах.

3.  Оптимизируйте расчеты.Для больших таблиц можно использовать фильтры и функции для быстрого выделения нужных диапазонов. Это ускорит вычисления и упростит проверку результатов.

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

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

Что важно запомнить:

  • Внимательность к условиям задачи и корректное их выполнение — залог успеха.
  • Уверенное владение Excel. Базовые функции, такие как МАКС(), МИН(), СУММ() и использование формул с диапазонами, помогут быстро решить задачу.
  • Анализ логики. Убедитесь, что конечные результаты согласуются с ограничениями задачи и являются логически корректными.
19 задание
20 задание
21 задание
22 задание
23 задание
24 задание
25 задание
26 задание
27 задание

Если вы нашли ошибку на сайте, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

0

Госуслуги
Решаем вместе
Есть предложения по организации учебного процесса или знаете, как сделать школу лучше?

Подробный прогноз
https://world-weather.ru/pogoda/russia/moscow/

Антикоррупция

Новости

  • Госавтоинспекция Республики Башкортостан обращается к вам, дорогие родители!Госавтоинспекция Республики Башкортостан обращается к вам, дорогие родители!
  • Родительское собрание будущих первоклассниковРодительское собрание будущих первоклассников
  • День Национального антитеррористического комитетаДень Национального антитеррористического комитета
  • Кубок «Золото Сарматов»Кубок «Золото Сарматов»
  • Праздничный концертПраздничный концерт

Фотогалерея

Выпускной 2022

Выпускной 2022

Региональный этап Всероссийской олимпиады школьников по технологии 2020

Региональный этап Всероссийской олимпиады школьников по технологии 2020

Башкирское цифровое образование

Башкирское цифровое образование

Лингвистические каникулы для погружения в языковую атмосферу

Лингвистические каникулы для погружения в языковую атмосферу

Антикоррупционная деятельность

Рубрики

  • Башкирский язык (40)
  • Без рубрики (4)
  • Безопасность (87)
  • ВОШ (25)
  • ВПР (3)
  • Выпускникам (9)
  • ГИА (36)
  • Кадеты (42)
  • Конкурсы (11)
  • Новости (1 386)
  • Объявления для родителей (185)
  • Объявления для учеников (83)
  • Объявления для учителей (62)
  • олимпиады (2)
  • Фортуна (1)

Где мы находимся

Наша группа ВК

Календарь событий

Март 2026
Пн Вт Ср Чт Пт Сб Вс
« Фев    
 1
2345678
9101112131415
16171819202122
23242526272829
3031  
Сведения об образовательной организацииСтруктура и органы управления образовательной организациейФотогалереяВидеогалереяРасписаниеЭлектронный дневникГрафик кружковБезопасностьАнтикоррупция
При перепечатке или цитировании (полном или частичном) ссылка на Официальный сайт МБОУ "Лицей №160" ГО г. Уфа Республики Башкортостан обязательна.
Выбор пользователей. Знак получают сайты с высокой степенью вовлечённости и лояльности пользователей по данным Яндекса.
Знак получают сайты, у которых есть трафик с Турбо-страниц. Они позволяют ускорить загрузку на мобильных в несколько раз.”></a></div></div></div>

			
		</div>
	</div>

</footer>
<!-- /FOOTER -->



<a class=
Политика конфиденциальности
Данный сайт использует файлы cookies Принять Отклонить Подробнее
Политика конфиденциальности и куки
WordPress Lessons

Спасибо!

Теперь редакторы в курсе.

Закрыть
Яндекс.Метрика