четверг, 24 июля 2014 г.

Сжатие и кодирование

Задание
Для хранения длинных чисел можно использовать алгоритм кодирования повторов (RLE), который заменяет повторяющиеся цифры (серии) на число повторов цифры и саму цифру. Например, число 5999 после сжатия станет числом 1539. Если длина серии превосходит 9, она разбивается на несколько серий длиной 9 и, возможно, ещё одну длиной меньше 9. После сжатия производится поразрядное кодирование, все цифры кодируются одинаковым и минимально возможным количеством бит.
Сколько байт потребуется для сжатия и кодирования указанным способом числа 12 300 000 000 000 555?

Решение
Закодируем исходное число указанным способом:
  - 
одна единица, одна двойка, одна тройка, девять нулей, оставшиеся два нуля, три пятерки.
Для кодирования каждой из 10 цифр требуется
  бита. 
Округление в данном случае всегда происходит в большую сторону: вариантов должно быть достаточно для однозначного кодирования всех символов.
Для поразрядного кодирования 12 получившихся цифр требуется
  бит или   байт.

Ответ: 6

Комментариев нет:

Отправить комментарий