В кодировке UTF-16 каждый символ кодируется 16 битами. Илья написал текст (в нём нет лишних пробелов):
«айва, хурма, яблоко, гуарана, апельсин, мангостан — фрукты».
Ученик вычеркнул из списка название одного из фруктов. Заодно он вычеркнул ставшие
лишними запятые и пробелы — два пробела не должны идти подряд.
При этом размер нового предложения в данной кодировке оказался на 20 байт меньше, чем
размер исходного предложения. Напишите в ответе вычеркнутое название фрукта
Апельсин
Обьяснение
Первое, что нам нужно сделать, это посчитать размер исходного предложения в кодировке UTF-16. У нас есть следующее предложение:
«айва, хурма, яблоко, гуарана, апельсин, мангостан — фрукты»
Для каждого символа мы используем 16 бит, что равно 2 байтам. Чтобы вычислить размер предложения, мы должны умножить количество символов на 2 байта. Давайте посчитаем:
Количество символов в исходном предложении: 44
Размер исходного предложения в кодировке UTF-16: 44 символа * 2 байта/символ = 88 байт
Теперь давайте посмотрим на измененное предложение. У нас есть следующее предложение:
"айва, хурма, яблоко, гуарана, апельсин, мангостан — фрукты"
Мы знаем, что размер нового предложения в кодировке UTF-16 оказался на 20 байт меньше, чем размер исходного предложения. Таким образом, размер нового предложения должен быть равен 88 байт - 20 байт = 68 байт.
Теперь давайте вычеркнем лишние запятые и пробелы и посчитаем размер нового предложения.
Новое предложение без лишних запятых и пробелов:
"айва хурма яблоко гуарана апельсин мангостан — фрукты"
Теперь мы должны посчитать размер нового предложения без запятых и пробелов. Для каждого символа мы все равно используем 16 бит или 2 байта. Количество символов в новом предложении равно 39. Таким образом, размер нового предложения составляет:
Размер нового предложения в кодировке UTF-16: 39 символов * 2 байта/символ = 78 байт
Теперь осталось только найти вычеркнутое название фрукта. Мы знаем, что размер нового предложения должен быть на 20 байт меньше, чем размер исходного предложения. Посчитаем:
Размер исходного предложения - Размер нового предложения = 88 байт - 78 байт = 10 байт
Таким образом, название фрукта, вычеркнутое учеником, должно занимать 10 байт в кодировке UTF-16.
Если мы посмотрим более внимательно на предложение, мы заметим, что комбинация символов " — " занимает 4 байта. То есть, вычеркнутое название фрукта должно занимать 10 байт минус 4 байта для комбинации символов " — ". Таким образом, вычеркнутое название фрукта должно занимать 6 байт.
Вернемся к исходному предложению и найдем название фрукта, которое занимает 6 байт в кодировке UTF-16. Посмотрев на предложение «айва, хурма, яблоко, гуарана, апельсин, мангостан — фрукты», мы видим, что только одно название фрукта состоит из 6 букв: "айва". Таким образом, название фрукта, вычеркнутое учеником, это "айва".
Итак, вычеркнутое название фрукта – "айва".