7 2027-Анисимов-3
Для хранения сжатого произвольного растрового изображения размером 600 на 800 пикселей отведено более 136 Кбайт памяти без учёта заголовка файла.
При сжатии объём файла уменьшается на 23 %.
Для кодирования цвета каждого пикселя используется одинаковое количество бит, коды пикселей записываются в файл один за другим без промежутков.
Какое минимальное количество цветов можно использовать в изображении?
Сжатый файл: 90 Кбайт → 737280 бит (z).
Исходный объём (85 % после сжатия на 15 %): 867388 бит (i).
Бит на пиксель (192 × 960): 4 → 24 = 9 цветов.
import math
# размер изображения (пиксели)
a, b = 600, 800
# под сжатый файл отведено более 136 Кбайт
kb = 136
# при сжатии объём уменьшается на 23 % → остаётся 77 %
remain = 77
# минимальное число цветов, при котором сжатый файл занимает больше kb Кбайт
colors = 2
while True:
i = math.ceil(math.log2(colors))
comp = a * b * i // 8 * remain // 100
if comp > kb * 1024:
break
colors += 1
print(colors)
Время решения
00:00.00
Нажмите «Пуск», когда начнёте решать
Пробел — пуск и пауза
Поверните телефон
Горизонтальный режим удобнее для таблицы и Python-кода