Вопрос:

11. В одной из кодировок Unicode каждый символ кодируется 16 битами. Ученица написала текст (в нем нет лишних пробелов): «Предметы мебели: пуф, стул, диван, кресло, кровать, тумбочка, оттоманка, полукресло, раскладушка». Ученица удалила из списка название одного из предмета. Заодно он вычеркнул ставшие лишними запятые и пробелы - два пробела не должны идти подряд. При этом размер нового предложения в данной кодировке оказался на 16 байт меньше, чем размер исходного предложения. Напишите в ответе удаленное название предмета.

Ответ:

16 байт это 16 * 8 = 128 бит. Так как каждый символ в Юникоде кодируется 16 битами, то разница в 128 / 16 = 8 символов. Теперь посчитаем количество символов в каждом из слов: пуф(3) стул(4) диван(5) кресло(6) кровать(7) тумбочка(8) оттоманка(9) полукресло(10) раскладушка(11) с учетом разделителей (запятые, пробелы). Удаление одного предмета уменьшило общее число символов на 8. Пересчитаем, прибавляя к длине слова 2, так как перед словом и после него есть разделители, то есть (слово+2). Получается: 5+6+7+8+9+10+11+12+13 = 81 символ. Удалив слово 'кровать' получим: 5+6+7+8+10+11+12 = 59 символа. Длина разницы: 81 -59 = 22. Это не 8, значит это не правильное предположение. Рассчитаем количество символов в каждом слове, если убрать все запятые и пробелы: пуф(3), стул(4), диван(5), кресло(6), кровать(7), тумбочка(8), оттоманка(9), полукресло(10), раскладушка(11). Так как 16 байт соответствуют 16 * 8 = 128 битам, а 1 символ кодируется 16 битами, то убрали 128/16 = 8 символов. Значит убрали слово состоящее из 8 символов, это слово 'тумбочка'. Таким образом, было удалено слово тумбочка.
Смотреть решения всех заданий с фото

Похожие