Архив задач олимпиады по математике и криптографии
Агент с часами
6. Агенту передаются сообщения с помощью специальных «передающих» часов, установленных на главной площади города. В заранее условленное время агент приходит к часам и начинает следить за их секундной стрелкой. Если прошла секунда, а стрелка не сдвинулась, значит передан 0, в противном случае (прошла секунда и стрелка сдвинулась) передана 1. Каждая буква сообщения закодирована пятизначной комбинацией из 0 и 1 в соответствии с таблицей (считается, что Е=Ё). Данные из таблицы считываются сверху вниз. Так, например, буква Б заменяется на 00001. При приёме сообщения случайный прохожий ненадолго отвлёк агента. Помогите ему восстановить сообщение, если известно, что за время сеанса связи часы отстали на 81 секунду, а в блокноте у агента записаны следующие знаки:
Попробуем прочитать полученное сообщение. Для этого разобьём его на группы по пять знаков и произведём обратную замену в соответствии с таблицей:
Видимо начало нечитаемого текста, ВЬВД000, приходится на тот момент, когда отвлекли агента. Попробуем выписать буквы сообщения, формируя их с конца, чтобы определить место разрыва: …01ШАФФААРЧАСА Совмещая полученную информацию, получим такое сообщение: П Р И Х О Д И Т Е З А В Т Р А В 000 Ч А С А Теперь необходимо понять, сколько и какие знаки пропущены. Для этого используем информацию об отставании часов. Фраза «часы отстали на 81 секунду» говорит о том, что в сообщение встречается 81 нулей. Агент записал 71 нулей. Значит, среди пропущенных знаков встречается 10 нулей. Посмотрев на слова ЧАСА нетрудно сделать предположение, что пропущенный отрезок может содержать только сочетающиеся с ним числительные: два, три, четыре, двадцать два, двадцать три, двадцать четыре. Посмотрим, как выглядят короткие слова числительных в закодированном виде (в длинных будет слишком много нулей):
С 10-ю нулями слова нет, но три нуля итак остались в раскодированном тексте, значит искомое слово ДВА.