Вопрос:

2. В коди*ровке UTF-32 каждый символ кодируется 3D битами. Миша написал текст (в нем нет лишних пробелов): «Айва, Алыча, Генипа, Гуарана, Курбарил, Мангостан — фрукты». Ученик вычеркнул из списка название одного из фруктов. Заодно он вычеркнул ставшие лишними запятые и пробелы — два пробела не должны идти подряд. При этом размер нового предложения в данной кодировке оказался на 36 байтов меньше, чем размер исходного предложения. Напишите в ответе вычеркнутое название фрукта.

Смотреть решения всех заданий с листа

Ответ:

Решение:

В кодировке UTF-32 каждый символ кодируется 32 битами. В одном байте 8 бит, значит, каждый символ занимает 32 / 8 = 4 байта.

Известно, что размер текста уменьшился на 36 байтов. Это означает, что суммарно вычеркнутый фрукт, лишние запятые и пробелы занимают 36 байтов.

В исходном тексте фрукты перечислены через запятую и пробел. Например, "Айва, Алыча".

Рассмотрим варианты:

  1. Айва: 4 байта (слово) + 1 байт (запятая) + 1 байт (пробел) = 6 байт.
  2. Алыча: 5 байт (слово) + 1 байт (запятая) + 1 байт (пробел) = 7 байт.
  3. Генипа: 5 байт (слово) + 1 байт (запятая) + 1 байт (пробел) = 7 байт.
  4. Гуарана: 6 байт (слово) + 1 байт (запятая) + 1 байт (пробел) = 8 байт.
  5. Курбарил: 7 байт (слово) + 1 байт (запятая) + 1 байт (пробел) = 9 байт.
  6. Мангостан: 8 байт (слово) + 1 байт (запятая) + 1 байт (пробел) = 10 байт.

Ученик вычеркнул один фрукт. Если предположить, что это был последний фрукт в списке, то вместо запятой и пробела убирались два пробела. Однако в условии сказано: "два пробела не должны идти подряд", что намекает на то, что удаление может привести к появлению двух пробелов или что ученик устранил уже существующие двойные пробелы. Если принять, что удаляется запятая и один пробел, то максимальное удаление — 10 байт (Мангостан + запятая + пробел).

Если предположить, что удалялся не один фрукт, а, например, фрукт и стоящий после него знак препинания и пробел, то общее уменьшение на 36 байтов требует более сложного подсчета.

Давайте предположим, что вычеркивается слово и вместе с ним удаляется пара «запятая + пробел». Это дает нам 4 байта на символ слова. Например, "Айва" (4 байта) + запятая (1 байт) + пробел (1 байт) = 6 байт. Это слишком мало.

Посмотрим на задачу иначе: сколько символов было удалено? 36 байт / 4 байта/символ = 9 символов.

Какие фрукты имеют длину, которая, при добавлении разделителей, могла бы дать 9 символов? Если удалить слово и запятую с пробелом:

  • Айва (4) + запятая (1) + пробел (1) = 6 символов.
  • Алыча (5) + запятая (1) + пробел (1) = 7 символов.
  • Генипа (5) + запятая (1) + пробел (1) = 7 символов.
  • Гуарана (6) + запятая (1) + пробел (1) = 8 символов.
  • Курбарил (7) + запятая (1) + пробел (1) = 9 символов.
  • Мангостан (8) + запятая (1) + пробел (1) = 10 символов.

Вычеркнутое слово "Курбарил" имеет длину 7 символов. Удаление "Курбарил, " (7 + 1 + 1 = 9 символов) соответствует 9 * 4 = 36 байтам. Если "Курбарил" было последним, то удалилось "Курбарил " (7 + 1 + 1 = 9 символов). Условие "два пробела не должны идти подряд" может относиться к тому, что после удаления фрукта, если он был не последним, запятая и пробел заменяются одним пробелом, или же, если фрукт был предпоследним, то после удаления фрукта и запятой, оставался пробел, который с последующим словом образовывал бы двойной пробел, который ученик устранил.

Самый логичный вариант, учитывая, что удаление составило 36 байт (что равно 9 символам по 4 байта каждый), это удаление слова "Курбарил" (7 символов) и двух пробелов (2 символа), либо слова "Курбарил" (7 символов), запятой (1 символ) и одного пробела (1 символ), что в сумме дает 9 символов.

Если предположить, что ученик удалил слово и одну запятую с одним пробелом, то: 7 (Курбарил) + 1 (запятая) + 1 (пробел) = 9 символов. 9 символов * 4 байта/символ = 36 байт.

Если бы удалялся "Мангостан" (8 символов), то 8 + 1 (запятая) + 1 (пробел) = 10 символов, что составило бы 40 байт.

Таким образом, наиболее вероятным является удаление слова "Курбарил".

Ответ: Курбарил

ГДЗ по фото 📸
Подать жалобу Правообладателю