Задание №7 ЕГЭ по информатике: разбор, шаблоны кода Python и анти-примеры | СмартКИМ
СмартКИМ УДОБНАЯ ПОДГОТОВКА К ЕГЭ И ОГЭ
Задачи №7 Решать в тренажере Войти в СмартКИМ
ЕГЭ (1–27) ОГЭ (1–15) Python: шпаргалка
Быстрый переход по номерам и темам
Базовый (1 балл) Время: 2-4 мин Формулы Python как калькулятор Степени двойки Все задачи №7 в каталоге

Задание №7. Размер картинки и звука: считаем объём

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

Что от тебя хотят

Это почти целиком арифметика. В условии даны параметры файла, а нужно найти его размер в байтах, килобайтах или мегабайтах (или наоборот, найти один параметр по размеру). Баллы теряют не на идее, а на единицах измерения.

Две формулы

ЧтоФормулаЧто обозначают буквы
КартинкаI = X · Y · iX, Y — размеры в пикселях, i — бит на пиксель
ЗвукI = f · b · k · tf — частота в Гц, b — бит на отсчёт, k — каналы, t — секунды

Число бит на пиксель находят из числа цветов N: наименьшее i, для которого 2 ** i >= N. Для 200 цветов это 8, потому что 27 = 128 мало, а 28 = 256 хватает.

Единицы измерения

  • В 1 байте 8 бит. В 1 Кбайте 1024 байта, в 1 Мбайте 1024 Кбайта.
  • В 1 кГц 1000 Гц (а не 1024).
  • Время всегда в секундах: минуты умножаем на 60.
  • Стерео это 2 канала, моно 1, квадро 4.
Килогерц и килобайт это разные «кило». В частоте 1 кГц = 1000 Гц, в памяти 1 Кбайт = 1024 байта. На этом ломается треть решений.

Разбор на живом примере

Изображение размером 640 × 480 пикселей. Для кодирования цвета используется палитра из 200 цветов. Сколько Кбайт занимает несжатое изображение?

  1. Для 200 цветов нужно 8 бит на пиксель.
  2. Всего бит: 640 · 480 · 8 = 2 457 600. В байтах это 307 200, в Кбайтах 300.

Ответ: 300 Кбайт.

Звукозапись длится 1 минуту, стерео, частота дискретизации 32 кГц, разрядность 16 бит. Сколько Кбайт занимает файл?

  1. Подставляем: 32 000 · 16 · 2 · 60 = 61 440 000 бит.
  2. В байтах 7 680 000, в Кбайтах 7500.

Ответ: 7500 Кбайт. Оба результата подтверждаются кодом в окнах ниже.

Если «было-стало»

Не считай оба объёма целиком. Посмотри, как изменился каждый множитель. Размер картинки удвоили по каждой стороне и палитру увеличили с 16 до 256 цветов? Площадь выросла в 4 раза, бит на пиксель с 4 до 8, то есть в 2 раза, и объём вырос в 8 раз.

Разновидности и прототипы задания на экзамене

Тип 1: Растровое изображение
Размер, число цветов, иногда уровень прозрачности и сжатие.
Тип 2: Звукозапись
Частота, глубина, число каналов и длительность.
Тип 3: Что-то изменилось
Параметры поменяли и спрашивают, во сколько раз изменился объём.

Код решения на Python

Запустить код в онлайн-песочнице
Размер картинки в Кбайт
colors = 200
x = 640
y = 480

i = 1
while 2 ** i < colors:
    i += 1

bits = x * y * i
print(bits / 8 / 1024)
Размер звука в Кбайт
f = 32000
b = 16
k = 2
t = 60

bits = f * b * k * t
print(bits / 8 / 1024)

Типичные ошибки

✕ Не так
Умножить кГц на 1024
44 кГц это 44 000 Гц: приставка для частоты десятичная.
✓ Так
Частота: 1 кГц = 1000 Гц. Память: 1 Кбайт = 1024 байта.
✕ Не так
Забыть перевести минуты в секунды
Подставить 2 вместо 120.
✓ Так
Время в формуле всегда в секундах.
✕ Не так
Округлить число бит на пиксель вниз
Для 200 цветов нельзя взять 7: 2 в седьмой всего 128.
✓ Так
Округлять вверх: берём наименьшее i, при котором 2 ** i не меньше числа цветов.
ГРОБ

ГРОБ №7: Сжатие и прозрачность

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

Как обойти
Складывай биты на пиксель: цвет плюс прозрачность. После сжатия на 30% остаётся 70% объёма: умножай на 0,7, а не вычитай 0,3 из чего-то другого.

Лайфхаки на экзамене

  1. Сравнение «было-стало»: считай, во сколько раз изменился каждый множитель, абсолютные числа не нужны.
  2. Степени двойки полезно помнить: 2^7 = 128, 2^8 = 256, 2^10 = 1024, 2^16 = 65536.
Банк реальных задач №7 Открыть в тренажере СмартКИМ