409737: GYM103714 G Уязвимое хэширование

Memory Limit:0 MB Time Limit:0 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

G. Уязвимое хэшированиеограничение по времени на тест1 секундаограничение по памяти на тест256 мегабайтвводстандартный вводвыводстандартный вывод

Антон решил создать свою тестирующую систему, так как та, которая использовалась на соревнованиях в его школе, ему категорически не нравилась. И всё шло хорошо, пока не настал черёд подсистемы аутентификации пользователей.

Для реализации этой системы, ему нужно найти способ хэшировать пароли пользователей, так как реальные пароли в Базе Данных хранить нельзя.

Для хэширования какой-либо строки $$$s$$$, Антон решил использовать составной хэш - два числа: длина строки $$$n=|s|$$$, и сумма кодов символов $$$h=\sum_{i=1}^n ord(s_i)$$$. Однако в своей системе для использования в паролях он решил разрешить лишь строчные латинские буквы, для которых кодом будет являться их позиция в алфавите. Так, для строки $$$abacaba$$$, он запомнит числа $$$n=7$$$ и $$$h=11=1+2+1+3+1+2+1$$$.

Однако теперь его друг Марат, воспользовавшись информацией о том, как Антон спроектировал свою систему, хочет подобрать пароль-коллизию для того, чтобы незаметно проникать в систему с правами администратора.

Коллизией называется явление, при котором несколько различных по содержимому данных имеют одинаковое значение хэш-функции. Например, для строки $$$abacaba$$$ коллизией может являться строка $$$abbabba$$$, потому что их длины совпадают так же, как и их суммы кодов символов.

Марат уже завладел информацией о том, каким паролем пользуется Антон. Помогите ему найти коллизию

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

Первая строка входных данных содержит строку $$$s$$$ $$$(1 \le |s| \le 10^5)$$$, состоящую из строчных латинских букв — пароль, используемый Антоном для администрирования его тестирующей системы

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

В первой строке выведите число $$$h$$$, которое будет получено при хэшировании пароля Антона. Во второй строке выведите сгенерированный пароль-коллизию. В случае, если такого пароля не существует, оставьте вторую строку пустой

ПримерыВходные данные
admin
Выходные данные
41
xcede
Входные данные
abacaba
Выходные данные
11
abbabba

加入题单

算法标签: