Please subscribe to the official Codeforces channel in Telegram via the link https://t.me/codeforces_official. ×

Arsenal911's blog

By Arsenal911, 12 years ago, In Russian

Нужно будет сделать программу, сжимающую числа в двоичном коде, о которых, мы знаем, что они находятся в диапазоне от 0 до 255. Или от 1 до 256. Так же мы знаем, что последующее число будет равно или больше предыдущего. То есть мы можем каждое число выразить одним байтом, указав на его месторасположение. Сжимать можно по две, четыре, восемь, шестнадцать, тридцать две и шестьдесят четыре числа. Сжатие пакетное. То есть если сжимать по два числа, то и последующие числа сжимать по два числа. Мы все знаем, если бы числа были бы расположены в случайном порядке, сжатие без потерь было бы невозможно. Но у нас одно преимущество (последующее число будет равно или больше предыдущего). Можно ли использовать это преимущество что бы сжать числа свыше приведённых пакетов используя при этом приведенное ниже количество бит на число.

При сжатии 2 чисел использовать по 7 бит на число.

При сжатии 4 чисел использовать по 6 бит на число.

При сжатии 8 чисел использовать по 5 бит на число.

При сжатии 16 чисел использовать по 4 бит на число.

При сжатии 32 чисел использовать по 3 бит на число.

При сжатии 64 чисел использовать по 2 бит на число.

Кто найдёт алгоритм соответствующим этим условиям вознаграждение 30000 рублей.


Ссылка на источник

  • Vote: I like it
  • +3
  • Vote: I do not like it