Хеши




Хэширование строки - представление строки в виде какого-то числа, уникального (будем считать, что шанс коллизии пренебрежительно мал) для каждой строки. Это позволяет хранить какие либо важные данные (вроде паролей) в базе данных не в виде строк, а в виде чисел. Это позволяет защитить пароли, если злоумышленник получит доступ к базе данных паролей, ибо он получит не сами пароли, а только их численное представление, а получить строку по ее хэшу (особенно не зная алгоритм хэширования) практически невозможно. 
В задачах по олимпиадному программированию чаще всего используется полиномиальный хэш.
Один из лучших способов определить хэш-функцию от строки S следующий:
h(S)  =  S[0]  +  S[1] * P  +  S[2] * P^2  +  S[3] * P^3  +  ...  +  S[N] * P^N

Task
Time limit: 2000 ms,
Memory limit: 256 Mb

Программисту Васе не повезло - вместо отпуска его послали в командировку на научную конференцию. "Надо повышать уровень знаний", - сказал начальник, "Важная конференция по криптографии, проводится во Франции - а там шифровали еще во времена Ришелье и взламывали чужие шифры еще во времена Виета."
Вася быстро выяснил, что все луврские картины он уже где-то видел, вид Эйфелевой башни приелся ему еще раньше, чем мышка стерла его с коврика, а такие стеклянные пирамиды у нас делают надо всякими киосками и сомнительными забегаловками. Одним словом, смотреть в Париже оказалось просто не на что, рыбу половить негде, поэтому Васе пришлось посещать доклады на конференции.
Один из докладчиков, в очередной раз пытаясь разгадать шифры Бэкона, выдвинул гипотезу, что ключ к тайнам Бэкона можно подобрать, проанализировав все возможные подстроки произведений Бэкона. "Но их же слишком много!" - вслух удивился Вася. "Нет, не так уж и много!" - закричал докладчик, - "Подсчитайте, и вы сами убедитесь!"
Тем же вечером Вася нашел в интернете полное собрание сочинений Бэкона. Он написал программу, которая переработала тексты в одну длинную строку, выкинув из текстов все пробелы и знаки препинания. И вот теперь Вася весьма озадачен - а как же подсчитать количество различных подстрок этой строки? 
Входные данные:
 На входе дана непустая строка, полученная Васей. Строка состоит только из строчных латинских символов. Ее длина не превосходит 2,000 символов. 
Выходные данные:
 Выведите количество различных подстрок этой строки.

Пример ввода:
aaba
Пример вывода:
8

Автор: Никита Мякишев

Auto CHOOSE THE PROGRAMMING NECESSARY LANGUAGE!
Attach the program source file:
or enter the source code in the language:

Rules for designing programs and a list of errors during automatic task verification
           

Results: