ЕГЭ по информатике · задание 7

Объём изображений и звуковых файлов

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

Формулы

  • Изображение: V = (ширина · высота) · i бит, где 2i ≥ числа цветов.
  • Звук: V = частота · разрешение · каналы · время.
  • Время передачи: t = V / скорость.

Единицы

  • 1 байт = 8 бит, 1 Кбайт = 1024 байт, 1 Мбайт = 1024 Кбайт.
  • 1 кГц = 1000 Гц, 1 Кбит/с в задачах ЕГЭ = 1024 бит/с.
  • Степени двойки удобно держать в голове: 210 = 1024, 220 ≈ миллион.

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

  • Взять число цветов вместо числа бит.
  • Округлить глубину цвета вниз: для 230 цветов нужно 8 бит, а не 7.
  • Забыть, что «целая часть» — это округление вниз, а «наименьшее целое время» — вверх.

Разобранные варианты

Сначала посчитай сам, потом открой разбор. В разборе — вычисления по шагам и короткая программа.

Вариант 1

изображение · экономия трафика

Фотограф делает снимки цифровой камерой. Каждая фотография — растровое изображение размером 1920×1080 пикселей, используется палитра из 1119 цветов. Для экономии трафика приложение-мессенджер оцифровывает снимки повторно, используя размер 1280×720 пикселей и глубину цвета 5 бит. Сколько Кбайт трафика экономится при передаче 50 фотографий? В ответе укажите целую часть полученного числа.

Разбор

Шаг 1. Глубина цвета исходных снимков. Нужно i бит, где 2i ≥ 1119: 210 = 1024 мало, 211 = 2048 хватает, значит i = 11 бит.

Шаг 2. Объём одного снимка в битах. До: 1920·1080·11 = 22809600 бит; после: 1280·720·5 = 4608000 бит.

Шаг 3. Экономия на 50 снимках: 50·(22809600 − 4608000) = 910080000 бит = 910080000 / 8 / 1024 ≈ 111093.750 Кбайт. Целая часть — 111093.

Ответ: 111093

Решение на Python.

from math import ceil, log2

i1 = ceil(log2(1119))          # бит на пиксель
before = 1920 * 1080 * i1           # бит в одном снимке до пересжатия
after = 1280 * 720 * 5
saved = 50 * (before - after) / 8 / 1024   # Кбайт
print(int(saved))

Вариант 2

звук · повторная запись

Музыкальный фрагмент был записан в формате моно, оцифрован и сохранён в виде файла без сжатия данных. Размер полученного файла — 36 Мбайт. Затем тот же музыкальный фрагмент был записан повторно в формате квадро (четырёхканальная запись) с частотой дискретизации в 3 раза меньше, с разрешением в 2 раза больше, длительностью в 2 раза больше, чем в первый раз. Сжатие данных не производилось. Укажите размер файла в Мбайт, полученного при повторной записи. В ответе запишите только целое число, единицу измерения писать не нужно.

Разбор

Формула. Объём звукового файла без сжатия: V = (частота дискретизации) × (разрешение, бит) × (число каналов) × (время). Объём пропорционален каждому множителю, поэтому достаточно умножить старый размер на коэффициенты изменения.

Коэффициенты: каналов ×4; частота ×1/3; разрешение ×2; длительность ×2.

Новый размер: 36 · 4 · 1/3 · 2 · 2 = 192 Мбайт.

Ответ: 192

Решение на Python.

from fractions import Fraction as F

size = F(36)                 # Мбайт
size = size * F(4, 1)   # каналов
size = size * F(1, 3)   # частота
size = size * F(2, 1)   # разрешение
size = size * F(2, 1)   # длительность
print(size)

Вариант 3

изображение · число цветов

Для хранения серии из 16 одинаковых по размеру изображений размером 512×256 пикселей каждое отведено 2224 Кбайт памяти без учёта размера заголовка файла. Для кодирования цвета каждого пикселя используется одинаковое количество бит, коды пикселей записываются в файл один за другим без промежутков. Какое максимальное количество цветов можно использовать в изображении?

Разбор

Шаг 1. Память в битах: 2224 Кбайт = 2224·1024·8 = 18219008 бит.

Шаг 2. Пикселей: 512·256·16 = 2097152.

Шаг 3. Бит на пиксель: 18219008 / 2097152 = 8.688, берём целую часть i = 8.

Шаг 4. Цветов: 28 = 256.

Ответ: 256

Решение на Python.

memory = 2224 * 1024 * 8        # бит
pixels = 512 * 256 * 16
i = memory // pixels               # бит на пиксель, округляем вниз
print(2 ** i)

Вариант 4

изображение · время передачи

Камера наблюдения делает снимки размером 1600×1200 пикселей, палитра содержит 10240 цветов. Снимки передаются на сервер по каналу связи со скоростью 2048 Кбит/с без сжатия, заголовки файлов не учитываются. За какое наименьшее целое число секунд будет передана серия из 50 снимков?

Разбор

Шаг 1. Для 10240 цветов нужно i = 14 бит на пиксель (214 = 16384 ≥ 10240, а 213 = 8192 мало).

Шаг 2. Объём серии: 1600·1200·14·50 = 1344000000 бит.

Шаг 3. Скорость: 2048 Кбит/с = 2097152 бит/с. Время: 1344000000 / 2097152 ≈ 640.869 с. Целых секунд нужно не меньше этого — 641.

Ответ: 641

Решение на Python.

from math import ceil, log2

i = ceil(log2(10240))
bits = 1600 * 1200 * i * 50
speed = 2048 * 1024          # бит в секунду
print(ceil(bits / speed))

Вариант 5

звук · размер файла

Производится четырёхканальная (квадро) звукозапись с частотой дискретизации 32 кГц и 32-битным разрешением. Запись длится 4 мин, её результаты записываются в файл, сжатие данных не производится. Определите размер полученного файла в Мбайт. В ответе запишите целое число, ближайшее к размеру файла.

Разбор

Формула. V = частота · разрешение · каналы · время = 32000 · 32 · 4 · 240 = 983040000 бит.

В Мбайт: 983040000 / 8 / 1024 / 1024 ≈ 117.188. Ближайшее целое — 117.

Обратите внимание: 1 кГц = 1000 Гц (десятичная приставка), а 1 Мбайт = 1024 · 1024 байт.

Ответ: 117

Решение на Python.

bits = 32 * 1000 * 32 * 4 * 240
print(round(bits / 8 / 1024 / 1024))

Вариант 6

изображение · экономия трафика

Фотограф делает снимки цифровой камерой. Каждая фотография — растровое изображение размером 1280×1024 пикселей, используется палитра из 2166 цветов. Для экономии трафика приложение-мессенджер оцифровывает снимки повторно, используя размер 960×720 пикселей и глубину цвета 14 бит. Сколько Кбайт трафика экономится при передаче 50 фотографий? В ответе укажите целую часть полученного числа.

Разбор

Шаг 1. Глубина цвета исходных снимков. Нужно i бит, где 2i ≥ 2166: 211 = 2048 мало, 212 = 4096 хватает, значит i = 12 бит.

Шаг 2. Объём одного снимка в битах. До: 1280·1024·12 = 15728640 бит; после: 960·720·14 = 9676800 бит.

Шаг 3. Экономия на 50 снимках: 50·(15728640 − 9676800) = 302592000 бит = 302592000 / 8 / 1024 ≈ 36937.500 Кбайт. Целая часть — 36937.

Ответ: 36937

Решение на Python.

from math import ceil, log2

i1 = ceil(log2(2166))          # бит на пиксель
before = 1280 * 1024 * i1           # бит в одном снимке до пересжатия
after = 960 * 720 * 14
saved = 50 * (before - after) / 8 / 1024   # Кбайт
print(int(saved))

Вариант 7

звук · повторная запись

Музыкальный фрагмент был записан в формате стерео, оцифрован и сохранён в виде файла без сжатия данных. Размер полученного файла — 24 Мбайт. Затем тот же музыкальный фрагмент был записан повторно в формате квадро (четырёхканальная запись) с частотой дискретизации в 2,5 раза больше, длительностью в 1,5 раза больше, чем в первый раз. Сжатие данных не производилось. Укажите размер файла в Мбайт, полученного при повторной записи. В ответе запишите только целое число, единицу измерения писать не нужно.

Разбор

Формула. Объём звукового файла без сжатия: V = (частота дискретизации) × (разрешение, бит) × (число каналов) × (время). Объём пропорционален каждому множителю, поэтому достаточно умножить старый размер на коэффициенты изменения.

Коэффициенты: каналов ×2; частота ×5/2; длительность ×3/2.

Новый размер: 24 · 2 · 5/2 · 3/2 = 180 Мбайт.

Ответ: 180

Решение на Python.

from fractions import Fraction as F

size = F(24)                 # Мбайт
size = size * F(2, 1)   # каналов
size = size * F(5, 2)   # частота
size = size * F(3, 2)   # длительность
print(size)

Вариант 8

изображение · число цветов

Для хранения серии из 16 одинаковых по размеру изображений размером 800×600 пикселей каждое отведено 3645 Кбайт памяти без учёта размера заголовка файла. Для кодирования цвета каждого пикселя используется одинаковое количество бит, коды пикселей записываются в файл один за другим без промежутков. Какое максимальное количество цветов можно использовать в изображении?

Разбор

Шаг 1. Память в битах: 3645 Кбайт = 3645·1024·8 = 29859840 бит.

Шаг 2. Пикселей: 800·600·16 = 7680000.

Шаг 3. Бит на пиксель: 29859840 / 7680000 = 3.888, берём целую часть i = 3.

Шаг 4. Цветов: 23 = 8.

Ответ: 8

Решение на Python.

memory = 3645 * 1024 * 8        # бит
pixels = 800 * 600 * 16
i = memory // pixels               # бит на пиксель, округляем вниз
print(2 ** i)

Вариант 9

звук · повторная запись

Музыкальный фрагмент был записан в формате моно, оцифрован и сохранён в виде файла без сжатия данных. Размер полученного файла — 96 Мбайт. Затем тот же музыкальный фрагмент был записан повторно в формате квадро (четырёхканальная запись) с частотой дискретизации в 2 раза больше, чем в первый раз. Сжатие данных не производилось. Укажите размер файла в Мбайт, полученного при повторной записи. В ответе запишите только целое число, единицу измерения писать не нужно.

Разбор

Формула. Объём звукового файла без сжатия: V = (частота дискретизации) × (разрешение, бит) × (число каналов) × (время). Объём пропорционален каждому множителю, поэтому достаточно умножить старый размер на коэффициенты изменения.

Коэффициенты: каналов ×4; частота ×2.

Новый размер: 96 · 4 · 2 = 768 Мбайт.

Ответ: 768

Решение на Python.

from fractions import Fraction as F

size = F(96)                 # Мбайт
size = size * F(4, 1)   # каналов
size = size * F(2, 1)   # частота
print(size)

Вариант 10

изображение · экономия трафика

Фотограф делает снимки цифровой камерой. Каждая фотография — растровое изображение размером 1600×1200 пикселей, используется палитра из 2818 цветов. Для экономии трафика приложение-мессенджер оцифровывает снимки повторно, используя размер 640×480 пикселей и глубину цвета 22 бит. Сколько Кбайт трафика экономится при передаче 120 фотографий? В ответе укажите целую часть полученного числа.

Разбор

Шаг 1. Глубина цвета исходных снимков. Нужно i бит, где 2i ≥ 2818: 211 = 2048 мало, 212 = 4096 хватает, значит i = 12 бит.

Шаг 2. Объём одного снимка в битах. До: 1600·1200·12 = 23040000 бит; после: 640·480·22 = 6758400 бит.

Шаг 3. Экономия на 120 снимках: 120·(23040000 − 6758400) = 1953792000 бит = 1953792000 / 8 / 1024 ≈ 238500.000 Кбайт. Целая часть — 238500.

Ответ: 238500

Решение на Python.

from math import ceil, log2

i1 = ceil(log2(2818))          # бит на пиксель
before = 1600 * 1200 * i1           # бит в одном снимке до пересжатия
after = 640 * 480 * 22
saved = 120 * (before - after) / 8 / 1024   # Кбайт
print(int(saved))

Для самостоятельного решения

Варианты 11–15 без разборов. Ответ можно проверить кнопкой.

Вариант 11

изображение · время передачи

Камера наблюдения делает снимки размером 2048×1536 пикселей, палитра содержит 32768 цветов. Снимки передаются на сервер по каналу связи со скоростью 1536 Кбит/с без сжатия, заголовки файлов не учитываются. За какое наименьшее целое число секунд будет передана серия из 25 снимков?

Вариант 12

звук · повторная запись

Музыкальный фрагмент был записан в формате стерео, оцифрован и сохранён в виде файла без сжатия данных. Размер полученного файла — 60 Мбайт. Затем тот же музыкальный фрагмент был записан повторно в формате квадро (четырёхканальная запись) с частотой дискретизации в 1,5 раза меньше, с разрешением в 3 раза больше, длительностью в 1,5 раза больше, чем в первый раз. Сжатие данных не производилось. Укажите размер файла в Мбайт, полученного при повторной записи. В ответе запишите только целое число, единицу измерения писать не нужно.

Вариант 13

изображение · экономия трафика

Фотограф делает снимки цифровой камерой. Каждая фотография — растровое изображение размером 1600×1200 пикселей, используется палитра из 1424 цветов. Для экономии трафика приложение-мессенджер оцифровывает снимки повторно, используя размер 960×720 пикселей и глубину цвета 26 бит. Сколько Кбайт трафика экономится при передаче 128 фотографий? В ответе укажите целую часть полученного числа.

Вариант 14

изображение · число цветов

Для хранения серии из 32 одинаковых по размеру изображений размером 640×480 пикселей каждое отведено 7632 Кбайт памяти без учёта размера заголовка файла. Для кодирования цвета каждого пикселя используется одинаковое количество бит, коды пикселей записываются в файл один за другим без промежутков. Какое максимальное количество цветов можно использовать в изображении?

Вариант 15

звук · размер файла

Производится одноканальная (моно) звукозапись с частотой дискретизации 48 кГц и 32-битным разрешением. Запись длится 10 мин, её результаты записываются в файл, сжатие данных не производится. Определите размер полученного файла в Мбайт. В ответе запишите целое число, ближайшее к размеру файла.