АВТ
Язык:

Дистанционный практикум по программированию

Задачи Online статус Соревнования
Новости Справка СДО
 
Здравствуйте, Гость! Войдите с паролем или зарегистрируйтесь.

1715. Взлом хэшей

Ограничение времени: 2 сек.
Ограничение памяти:131072 КБайт
Баллы:100
Статистика Послать на проверку Задачу добавил debug

Хэширование (англ. hashing) — преобразование по детерминированному алгоритму входного массива данных произвольной длины в выходную битовую строку фиксированной длины. Такие преобразования также называются хэш-функциями или функциями свёртки, а их результаты называют хэшем.

Хэширование применяется для поиска дубликатов в сериях наборов данных, построения достаточно уникальных идентификаторов для наборов данных, контрольное суммирование с целью обнаружения случайных или намеренных ошибок при хранении или передаче, для хранения паролей в системах защиты (в этом случае доступ к области памяти, где находятся пароли, не позволяет восстановить сам пароль), при выработке электронной подписи (на практике часто подписывается не само сообщение, а его хэш-образ).

В общем случае однозначного соответствия между исходными данными и хэш-кодом нет в силу того, что количество значений хеш-функций меньше, чем вариантов входного массива; существует множество массивов с разным содержимым, но дающих одинаковые хэш-коды —так называемые коллизии. Вероятность возникновения коллизий играет немаловажную роль в оценке качества хеш-функций.

Wikipedia

 

Один из лучших простых способов определить хэш-функцию от строки S длины N следующий:

h(S)= S[0]*PN-1 +S[1]*PN-2 + S[2]* PN-3  +  ...  +  S[N-1]*P0

Под S[i] будем понимать ASCII код символа i. Часто для удобства и увеличения скорости вычисления производят в 32 или 64 битном типе с переполнением. Но, к сожалению такой хэш можно взломать независимо от выбираемого p. Ваша задача сделать это.

По заданному p, нужно найти 2 различные непустые строки с одинаковым значением хэш-функции с учетом того, что расчеты ведутся в знаковом 32 битном типе c переполнением.

 

Формат входного файла

 

В первой строке входного файла содержится  1 целое число p (1<=p<=109).

 

Формат выходного файла

 

Выведите 2 строки, имеющие одинаковое значение хэш-функции. Длина каждой строки должна быть не более 100 000 символов. Каждая строка должна содержать только символы от ‘a’ до ‘z’ включительно. Если решений несколько, выведите любое.

 

Пример

Входные данные

Выходные данные

31

abaabaabbbbbabbbbaa

abbbbbbaaaabbabaab

 


Статистика Послать на проверку Обсуждение задачи Автор/источник:
Задачи с соревнований и сборов / ИТ-фестиваль в Архангельске / IT-Архангельск - 2013 /
1714. G - Юбилей 1715. 1716. I - Прожектор
 
время генерации 0.11 сек.
© Copyright ВоГУ, АВТ, Носов Д.А., Андрианов И.А.