Есть ответ 👍

Текст состоит из 48004800 символов. Известно, что в тексте встречается ровно 200200 различных символов. При сохранении текста в памяти сохраняются коды символов так, что для записи каждого кода используется минимально возможное, одинаковое для всех кодов символов количество бит. Петя обнаружил, что весь текст можно представить в виде последовательности непересекающихся пар символов, причем в тексте встретится ровно KK различных пар символов. Петя решил сохранять в памяти код каждой пары символов, используя для записи каждого кода минимально возможное, одинаковое для всех кодов пар символов количество бит.

Петя обнаружил, что в результате объем памяти, требующейся для сохранения текста, уменьшился ровно на 12001200 байт. При каком минимальном значении KK это возможно. В ответе укажите целое число.

103
112
Посмотреть ответы 2

Ответы на вопрос:


Вобщем логика такова:
1) хитрый петя составил новую табличку и файл занял 2304 байта, так как юникод символ состоит из 2 байт (16 бит) составим соотношение для выяснения размера кода символа в его таблице:
4096/2304 = 16/х, отсюда
х = 9, т. е. для кодирования символа в таблице хитрого пети отводится 9 бит и всего можно накодировать 512 разных символов
2) неменее хитрый вася решил так - половина текста при 9 бит символе - 2304/9*2 = 128 симолов, он закодировал по новой таблице, для чего ему понадобилось 7 бит на символ, т. к 2 в 7 степени есть 128 а это и есть четверть от полного набора петиной таблицы.
теперь файл стал занимать 2304/2 + 7*128 = 1152 + 896 = 2048 байт,
таков размер итогового файла!
UraR1
4,7(85 оценок)

//dev-c++ 4.9.9.2 #include < iostream> using namespace std; const int n=5; int main(){       setlocale(lc_ctype,"russian");       int ma[n][n];       int ars[n];       int s=0;       for(int i=0; i< n; i++)ars[i]=0;       for(int i=0; i< n; i++)       for(int j=0; j< n; j++){         cin> > ma[i][j];         if(ma[i][j]%2! =0){                         s=s+ma[i][j];                         ars[i]=ars[i]+ma[i][j]; }}       cout< < "matrix: "< < endl;       for(int i=0; i< n; i++){         for(int j=0; j< n; j++)         cout< < ma[i][j]< < ' ';         cout< < endl; }       cout< < "сумма нечётных: "< < s< < endl;       for(int i=0; i< n; i++)       cout< < "сумма нечётных "< < i+1< < " строки: "< < ars[i]< < endl;       cin.get();       cin.get();       return 0; }

Популярно: Информатика