Entry tags:
LolPack
пусть у нас есть несжимаемый файл, по определению, байтики рандомные.
если взять первые 8 байт и представить их как число 64 бит, то для него можно подобрать множители, такие, что их можно записать как степень двойки (тройки). также будет остаток, который нужно будет добавить к произведению этих нескольких чисел, чтобы получить исходное число.
цель - найти такие множители, для которых можно будет записать их степень однобайтовым числом, т.е. от 0 до 255; например 2^16 или 3^78. если мы найдем такие множители, обозначение которых, включая обозначение остатка, займет меньше 8 байт, считай мы сжали эти 8 байт.
ну и (конечно) служебные байты для ведения структуры "архива", немного добавят информации, уменьшив соотношение исходного файла к "запакованному".
для этого приятно иметь процедуры деления/умножения произвольных больших целых чисел.
если взять первые 8 байт и представить их как число 64 бит, то для него можно подобрать множители, такие, что их можно записать как степень двойки (тройки). также будет остаток, который нужно будет добавить к произведению этих нескольких чисел, чтобы получить исходное число.
цель - найти такие множители, для которых можно будет записать их степень однобайтовым числом, т.е. от 0 до 255; например 2^16 или 3^78. если мы найдем такие множители, обозначение которых, включая обозначение остатка, займет меньше 8 байт, считай мы сжали эти 8 байт.
ну и (конечно) служебные байты для ведения структуры "архива", немного добавят информации, уменьшив соотношение исходного файла к "запакованному".
для этого приятно иметь процедуры деления/умножения произвольных больших целых чисел.