Задача #3970
Работа со строками
(Л. Шастин) Текстовый файл состоит не более чем из 10 000 000 прописных символов латинского алфавита.
Для последующего хранения и использования данные из файла сжимаются с помощью алгоритма RLE — метода сжатия данных, который заменяет непрерывные подпоследовательности одинаковых символов на количество повторов и сам символ, при этом RLE за один раз может сжать не более M = 5 одинаковых символов подряд. Если последовательность символов длиннее M, она разбивается на несколько блоков по M символов (или меньше, если остаток меньше M).
Данные закодированы в формате UTF-8, то есть любой символ занимает в памяти 8 бит.
Например, строка "AAAAABBBCCDAAAAA", состоящая из 16 символов и имеющая вес 128 бит, после применения RLE при M = 3 будет выглядеть как "3A2A3B2CD3A2A", состоять из 13 символов и весить 104 бита. В этом случае благодаря RLE удастся сэкономить 24 бита.
Определите количество бит, которое удастся сэкономить, если сжать данные из файла согласно алгоритму RLE.
Для выполнения этого задания следует написать программу.