Решение: Повтор фамилии в Unicode
В одной из кодировок Unicode каждый символ кодируется 16 битами.
Вова хотел написать текст (в нём нет лишних пробелов): «Ом, Бор, Кюри, Попов, Джоуль, Рентген, Курчатов, Резерфорд — великие физики».
Фамилию одного учёного ученик написал два раза подряд, добавив необходимые запятую и пробел. При этом размер написанного предложения в данной кодировке оказался на 8 байт больше, чем размер нужного предложения. Напишите слово, использованное дважды.
Решение по шагам
4 шагаОдин символ кодируется 16 битами, то есть 2 байтами.
$$16\ \text{бит} = 2\ \text{байта}$$Увеличение размера на 8 байт соответствует добавлению 4 символов.
$$8 : 2 = 4\ \text{символа}$$При повторении фамилии добавляются сама фамилия, запятая и пробел. Значит, длина фамилии равна 2 символам.
$$4 - 1 - 1 = 2$$Из перечисленных фамилий две буквы имеет только «Ом». Следовательно, повторно было написано это слово.
Где здесь ошибаются
Забывают перевести 16 бит в 2 байта.
Не учитывают запятую и пробел, добавленные при повторении.
Ищут фамилию длиной 4 символа, не вычитая запятую и пробел.