Вова делает логотипы для сайтов размером 640 на 128 пикселей и хранит их в папке. Для неё он выделил на жёстком диске 10 Мбайт памяти без учёта размера заголовка файла. Каждый файл хранится в двух форматах — превью и оригинал. Файл оригинального изображения больше превью на 65%. В палитре используется 1024 цвета. Для кодирования цвета каждого пикселя используется одинаковое количество бит, коды пикселей записываются в файл один за другим без промежутков.
Какое максимальное количество логотипов может сохранить Вова?
К hedef: подробно понять задачу и найти максимум логотипов.
Исходные данные и допущения
- Размер логотипа: 640 × 128 пикселей.
- Количество цветов в палитре: 1024 цвета → нужно 10 бит на пиксель (2^10 = 1024).
- Оригинал и превью: у каждого логотипа хранится два файла – превью и оригинал. Файл оригинального изображения больше превью на 65%.
- Заголовок файла не учитывается в объёме памяти.
- В памяти всего 10 Мбайт. Примем стандартное двоичное МБ: 1 МБ = 2^20 байт = 1,048,576 байт. Тогда 10 МБ = 10 × 1,048,576 = 10,485,760 байт.
1) Сколько пикселей в оригинале?
- Оригинальный размер: 640 × 128 = 81,920 пикселей.
2) Размер оригинала в байтах (для одного пикселя 10 бит):
- 81,920 пикселей × 10 бит/пиксель = 819,200 бит.
- Перевод в байты: 819,200 бит ÷ 8 = 102,400 байт.
3) Размер превью
- Оригинал больше превью на 65% => размер оригинала = 1.65 × размер превью.
- Значит размер превью = размер оригинала ÷ 1.65 = 102,400 ÷ 1.65 ≈ 62,060.606 байт.
4) Общий размер файлов на один логотип (и превью, и оригинал)
- Общий размер = размер оригинала + размер превью
- ≈ 102,400 + 62,060.606 = 164,460.606 байт.
- Можно точнее записать как 102,400 × (1 + 1/1.65) = 102,400 × (53/33) = 164,460.606 байт.
5) Сколько таких двойных файлов поместится в 10 МБ
- Максимальное число логотипов N = floor(10,485,760 байт ÷ 164,460.606 байт/логотип) ≈ floor(63.82) = 63.
Ответ
63 логотипа.
Примечание на случай разных единиц измерения
- Если бы 1 МБ считали десятичной (1 МБ = 1,000,000 байт), максимум был бы floor(10,000,000 ÷ 164,460.606) ≈ floor(60.8) = 60 логотипов.
- В задаче же чаще используется двоичное МБ (MiB), поэтому итог: 63 логотипа.