Как правило, первое задание из экзамена состоит в том, что необходимо найти слово, которое было вычеркнуто. Из вводных есть строка из которой удалили слово, вес одного символа и количество байт на которое строка сократилась.
Пример задания
В одной из кодировок Unicode каждый символ кодируется 16 битами. Вова написал текст (в нем нет лишних пробелов):
«еж, лев, слон, олень, тюлень, носорог, крокодил, аллигатор — дикие животные».
Ученик вычеркнул из списка название одного из животных. Заодно он вычеркнул ставшие лишними запятые и пробелы — два пробела не должны идти подряд.
При этом размер нового предложения в данной кодировке оказался на 16 байт меньше, чем размер исходного предложения. Напишите в ответе вычеркнутое название животного.
Анализ
У нас есть исходное предложение, где одно животное вычеркнуто, и результатом стало предложение, которое на 16 байт меньше. Нужно определить, какое животное было вычеркнуто.
Что нам известно:
- В Unicode каждый символ кодируется 16 битами.
- Вычеркнутое название животного привело к сокращению предложения на 16 байт.
Решение
Шаг 1 - единицы измерения
В задании вес одного символа указан в битах, а про предложение сказано, что оно сократилось на 16 байт. Биты и байты - разные единицы измерения. Чтобы правильно решить задачу, нужно вести расчёт в одних единицах измерения. В данном задании, как правило, считать можно в байтах.
1 байт = 8 бит.
значит, один символ весит 2 байта (16 бит / 8 = 2 байта)
Шаг 2 - длина удалённого слова
Известно, что вычеркнутое название животное уменьшило строку на 16 байт. Если один символ весит 2 байта, то поделив 16 на 2 получим, что было удалено 8 символов.
Но тут стоит быть внимательным. В задании сказано:
Ученик вычеркнул из списка название одного из животных. Заодно он вычеркнул ставшие лишними запятые и пробелы — два пробела не должны идти подряд.
Вместо со словом были вычеркнуты лишние пробелы и запятые. Пробел тоже весит 2 байта, как и запятая - потому что всё это символы. Посмотрим на исходную строку:
еж, лев, слон, олень, тюлень, носорог, крокодил, аллигатор — дикие животные
Если было удалено первое слово, то вместе с ним удалили запятую и пробел после этой запятой. Если слово было в середине, то тоже удалили запятую с пробелом после слова. Если слово последнее, то удалили запятую с пробелом перед этим словом.
Получается, что вместе со словом ВСЕГДА УДАЛЯЕТСЯ ЗАПЯТАЯ С ПРОБЕЛОМ.
Теперь, мы знаем сколько символов было удалено (8) и сколько среди них было символов, не являющихся словом (2). Количество букв в слове = 8 - 2 = 6 букв.
Шаг 3 - поиск слова
Ищем слово, состоящее из 6 букв. В этом задании подходящее слово будет только одно!
- еж — 2символа
- лев — 3 символа
- слон — 4 символа
- олень — 5 символов
- тюлень — 6 символов
- носорог — 7 символов
- крокодил — 8 символов
- аллигатор — 9 символов
Правильный ответ - тюлень
Дополнительный пример
В кодировке КОИ-8 каждый символ кодируется 8 битами. Андрей написал текст (в нем нет лишних пробелов):
При этом размер нового предложения в данной кодировке оказался на 11 байтов меньше, чем размер исходного предложения. Напишите в ответе вычеркнутое название страны.
Ученик вычеркнул из списка название одной из стран. Заодно он вычеркнул ставшие лишними запятые и пробелы — два пробела не должны идти подряд.
«Чад, Куба, Катар, Швеция, Эстония, Танзания, Сальвадор — страны».
Вес одного символа = 8 / 8 = 1 байт
Удалённые символы = 11 байт / 1 байт = 11 символов
Количество удалённых букв слова = 11 символов - 2 символа = 9 букв
Правильный ответ: Сальвадор