Найти в Дзене

Алгоритм решения задания 7 ЕГЭ по информатике. Часть 1

Задание 7 ЕГЭ по информатике нацелено на проверку навыков определения объёма памяти, необходимого для хранения информации. Некоторые варианты заданий также предполагают вычисления времени передачи информации и иных величин. Характерно для всех этих величин одно — они используются в одной общей формуле. Поэтому, имея на руках все данные, не составляет труда вычислить недостающее значение по этой формуле. В формулировках задания 7 основные отличия заключаются в величине, которую требуется найти. Это могут быть следующие значения: Причём могут использоваться методы сжатия, для уменьшения размера итогового файла. Но пугаться такого разнообразия формулировок не стоит. В действительности, вам предстоит работать с двумя типами файлов: изображение и звук. В редких случаях могут попасться видеофайлы, которые объединяют в себе и изображение, и звук. В данной статье мы рассмотрим только работу с изображениями. Для начала вспомним, что такое изображение. Все, что мы видим на экране является изобра
Оглавление

О задании

Задание 7 ЕГЭ по информатике нацелено на проверку навыков определения объёма памяти, необходимого для хранения информации. Некоторые варианты заданий также предполагают вычисления времени передачи информации и иных величин.

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

В формулировках задания 7 основные отличия заключаются в величине, которую требуется найти. Это могут быть следующие значения:

  1. Размер файла с данными
  2. Время или объём переданных данных
  3. Количество цветов в палитре
  4. Число снимков в пакете
  5. Глубина кодирования

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

В данной статье мы рассмотрим только работу с изображениями.

Работа с изображением

Для начала вспомним, что такое изображение. Все, что мы видим на экране является изображением. Каждое изображение состоит из маленьких квадратных точек, которые называются пикселями.

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

-2

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

Каждый пиксель имеет свой цвет.  Пиксели состоят из трёх основных цветов: красного (R), зелёного (G) и синего (B). Эти цвета называются моделью RGB. Они смешиваются в разных пропорциях, чтобы создать разные оттенки.

-3

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

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

Глубина цвета измеряется в битах. Например, если у нас есть 1 бит для кодирования цвета пикселя, то мы можем закодировать только два цвета: чёрный и белый. Если у нас есть 8 бит (или 1 байт), то мы можем закодировать 256 разных цветов. А если у нас есть в палитре 24 бита (или 3 байта), то мы можем закодировать более 16 миллионов разных цветов.

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

-4

Отсюда можем вывести формулу для определения глубины цвета или же веса одного пикселя по количеству цветов в палитре:

-5

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

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

Давайте разберем её на примере. В модели RGB как раз используется 24-битное кодирование. То есть на каждый цвет, или же канал цвета, выделяется по 8 бит. В итоге получаем, что один пиксель весит 3 · 8 = 24 бита.

-6

Теперь найдём количество цветов в палитре RGB. Для этого по первой формуле возведём 2 в степень, равную глубине цвета. Получаем значение 224, или же 16 77 216.

Теперь давайте выведем формулу для определения веса всего изображения. Мы уже получили вес одного пикселя. А также мы знаем, что у нас изображение имеет в ширину 4 пикселя, а в высоту 2 пикселя. Следовательно, перемножив ширину на высоту и на вес одного пикселя мы получим вес изображения.

Формула для определения объема памяти, необходимого для хранения растрового изображения:

Здесь:

  • h — высота изображения,
  • w — ширина изображения,
  • i — вес одного пикселя.

Работа с передачей данных

Мы уже умеем вычислять объем файла для его хранения. Но в задании 7 ЕГЭ по информатике нас также могут попросить высчитать скорость передачи файла или время, за которое его можно передать адресату.

Для работы с передачей данных у нас есть следующая формула:

-7

Здесь:

  • V — объем файла в битах,
  • q — скорость передачи данных (бит в секунду),
  • t — время в секундах.

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

Если в условии задания говорится о сжатии файлов на N процентов, то это означает, что итоговый объём файла уменьшился на N%.

Алгоритм решения задания 7

Далее мы рассмотрим алгоритмы решения заданий 7 с изображениями.

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

  1. Каково максимально возможное количество снимков в одном пакете?
  2. Какое максимальное/минимальное количество цветов можно использовать в изображении?
  3. Какой объем трафика экономится при передаче сжатого изображения
  4. Сколько изображений окажется на хранителе данных

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

Тип 1

Начнём разбор мы с такой формулировки:

Задание 702

«Прибор автоматической фиксации нарушений правил дорожного движения делает цветные фотографии размером 1024 на 768 пикселей, используя палитру из 4096 цветов. Снимки сохраняются в памяти камеры, группируются в пакеты по несколько штук, затем передаются в центр обработки информации со скоростью передачи данных 1 310 720 бит/с. Определите максимально возможное количество снимков в одном пакете, если на передачу одного пакета отводится не более 300 секунд.
В ответ запишите целое число»

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

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

У нас есть высота и ширина изображения (переменные h и w), а тут мы еще и вычислили значения переменной i. Так давайте подставим все эти числа в ранее изученную формулу и определим объем одного изображения:

-8

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

Вспоминаем, что у нас есть формула вычисления объёма переданных данных:

-9

Скорость передачи у нас известна, время тоже, значит находим максимально возможный объём одного переданного пакета:

-10

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

Но если пакет будет весить хоть на бит больше, то условие нарушится — в 300 секунд тут никак не уложимся.

Итак, у нас уже есть объём пакета изображений и вес одного изображения, отсюда легко вычислить количество изображений в пакете: для этого разделим максимальный вес пакета на известный вес одного изображения:

-11

Так, выходит, что можем передавать 41 изображение и еще 0,6 какого-то 42-го изображения. Звучит странно, да? Никто же не будет передавать часть изображения?

Что нам остаётся делать? Давайте попробуем передать полностью 42 изображения? Тогда получится, что вес пакета будет равняться:

-12

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

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

Теперь мы готовы дать ответ на это задание: 41.

Пример 1

Рассмотрим еще одну формулировку заданий 7 первого типа:

Задание 710

«Автоматическая фотоловушка в заповеднике, оснащённая датчиком движения, делает цветные фотографии проходящих мимо леопардов. Размер каждой фотографии 1024 х 64 пикселя, при этом используется палитра из 4096 цветов. Снимки сохраняются в памяти камеры, группируются по несколько штук, а затем передаются в центр охраны природы со скоростью передачи данных 655 360 бит/с. Каково максимально возможное количество снимков в одном пакете, если на передачу одного пакета отводится не более 70 секунд.
В ответе запишите целое число
»

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

Мы ранее работали с логарифмом, следовательно, необходимо импортировать функцию log2() из математической библиотеки:

-13

Далее запишем все известные данные в виде переменных:

-14

Вычисляем вес одного пикселя через логарифм:.

-15

Далее вычисляем вес одного изображения:

-16

И вес пакета:

-17

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

-18

Вся программа у нас выглядит следующим образом:

-19

А в ответ пишем полученное число 58.

Тип 2

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

-20

Ознакомимся с такой формулировкой:

Задание 704

«Прибор автоматической фиксации нарушений правил дорожного движения делает цветные фотографии размером 1280×720 пикселей. Снимки сохраняются в памяти камеры, группируются в пакеты по 69 штук, затем передаются в центр обработки информации со скоростью передачи данных 245760 байт/с. Каково минимальное возможное количество цветов в палитре изображения, если на передачу одного пакета отводится более 270 секунд?
В ответе запишите целое число»

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

Сначала можем найти минимальный вес одного пакета (обратите внимание, что теперь нам отводится более 270 секунд):

-21

Поскольку все вычисления необходимо проводить в минимальных единицах измерения, мы сразу перевели скорость 245 760 в биты, умножив её на 8.

Мы знаем, что в пакете 69 изображений, так давайте найдём вес одного изображения:

-22

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

Значит, чтобы условие удовлетворялось, округляем полученное значение в большую сторону: 7 693 357.

Далее вычисляем вес одного пикселя по уже известному весу одного изображения. Для этого выведем вес одного пикселя из формулы V1 = h · w · i:

-23

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

Все, мы на финишной прямой. Для вычисления количества цветов в палитре возводим 2 в степень 9 (i) и получаем значение 512. Но, поскольку требуется найти минимальное количество цветов, то выбираем значение, меньшее, чем 512 (29), но на 1 большее, чем 256 (28).

Для вычисления этого значения можно использовать такую формулу:

-24

Таким числом будет 257 — это самое минимальное число цветов в палитре изображения, удовлетворяющее условию задания. Его и пишем в ответ.

Пример 2

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

Задание 711

«Для хранения произвольного растрового изображения размером 2560 х 5040 пикселей отведено 14 175 Кбайт памяти без учёта размера заголовка файла. Для кодирования цвета каждого пикселя используется одинаковое количество бит, коды пикселей записываются в файл один за другим без промежутков. Какое максимальное количество цветов можно использовать в изображении?»

И снова будем решать задание в среде разработки Python. Обратите внимание, здесь мы не работаем ни с пакетами, ни с передачей данных. Нам достаточно просто вычислить количество цветов N = 2i, оно и будет максимальным количеством.

Если бы нам снова нужно было бы найти минимальное количество цветов, то мы бы использовали формулу, как в прошлом задании:

-25

Итак, выписываем все известные значения в переменные и сразу переводим килобайты в биты:

-26

Вычисляем вес одного пикселя и количество цветов по уже известным нам формулам:

-27

В итоге получаем ответ на это задание — 512.

Тип 3

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

Разберём задачу с такой формулировкой:

Задание 712

«Виталий делает снимки интересных мест и событий цифровой камерой своего смартфона. Каждая фотография представляет собой растровое изображение размером 1920×1080 пикселей и с палитрой из 223 цветов. В конце дня Виталий отправляет снимки друзьям с помощью приложения-мессенджера. Для экономии трафика приложение сжимает снимки, используя размер 1280×1024 пикселей и глубину цвета 21 бит.
Сколько Кбайт трафика экономится таким образом при передаче 120 фотографий?
В ответе укажите целую часть полученного числа»

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

Для начала выпишем все известные значения:

-28

Вычислим вес несжатого изображения:

-29

И вес сжатого:

-30

Для вычисления ответа найдём разницу в размерах сжатого и несжатого изображений, умножим её на количество изображений и переведём в килобайты (разделим на 2 в 13-ой степени):

-31

Получим число 295425, которое и будем ответом на это задание.

Пример 3

Следующая формулировка будет такой:

Задание 715

«Виталий фотографирует интересные места и события цифровой камерой своего смартфона. Каждая фотография представляет собой растровое изображение размером 1024×768 пикселей, при этом используется палитра из 230 цветов. В конце дня Виталий отправляет снимки друзьям с помощью приложения-мессенджера. Для экономии трафика приложение оцифровывает снимки повторно, используя размер 800×600 пикселей и глубину цвета 28 бит.
Сколько Кбайт трафика экономится при передаче 100 фотографий?

В ответе укажите целую часть полученного числа»

Решение здесь аналогично предыдущему, разве что изменим входные данные:

-32

В результате получаем ответ — 123937.

Тип 4

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

Рассмотрим задание с такой формулировкой:

Задание 706

«Фотограф делает цветные фотографии размером 7680×4320 пикселей, используя палитру из 216 цветов. Для сохранения снимков фотограф использует сменные карты памяти, каждая из которых вмещает не более 9 Гбайт данных. Когда на карте памяти остаётся недостаточно места для записи новой фотографии, фотограф берёт следующую, свободную карту. Известно, что фотограф сделал 4010 снимков. Сколько снимков оказалось на последней карте памяти из использованных?
В ответе запишите целое число»

Обратите внимание, что здесь мы не будем работать со значением количества цветов в палитре, ведь в формуле нужно только вес пикселя i, который в нашем случае равен 16.

А также нам понадобится функция округления в меньшую сторону из модуля mathfloor(). Импортируем её:

-33

Выпишем имеющиеся данные:

-34

Найдём, сколько снимков помещается на одну карту памяти:

-35

И осталось только найти количество снимков на последней карте памяти. Это значение можем вычислить как остаток от деления всех изображений 4010 на количество снимков, которое вмещает одна карта памяти:

-36

Весь код к данному заданию будет таким:

-37

А в результате получим число 95, которое и будет ответом.

Пример 4

И заключительная задача в этой статье имеет такую формулировку:

Задание 717

«Фотограф делает цветные фотографии размером 3840х2160 пикселей, используя палитру из 224 цветов. Для сохранения снимков фотограф использует сменные карты памяти, каждая из которых вмещает не более 16 Гбайт данных. Когда на карте остаётся недостаточно места для записи новой фотографии, фотограф заменяет карту на следующую свободную. Известно, что фотограф сделал 3742 снимка. Сколько снимков оказалось на последней карте памяти из использованных? В ответе запишите целое число»

Решение, опять же, идентично предыдущему:

-38

В ответ запишем число 292.

В следующей статье по 7 заданию мы разберём работу со звуковыми файлами. А больше задач по этой теме можете найти у нас на сайте.

Следующая часть >>>