Module: 哈希值


Problem

2 /2


散列值

Theory Click to read/hide

对字符串进行哈希处理是将字符串表示为某个数字,每个字符串都是唯一的(我们假设冲突的可能性可以忽略不计)。这允许您在数据库中存储任何重要数据(如密码)而不是字符串,而是数字。如果攻击者获得了密码数据库的访问权限,这允许您保护密码,因为他不会获得密码本身,而只能获得密码的数字表示,并且几乎不可能通过其散列获得字符串(尤其是在不知道散列算法的情况下) ). 
多项式哈希最常用于编程竞赛问题。
确定字符串S的哈希函数的最佳方法之一如下:
h(S)  =  S[0]  +  S[1] * P  +  S[2] * P^2  +  S[3] * P^3  +  ...  +  S[N] * P^N

Problem

程序员 Vasya 很不幸 - 他没有休假,而是被派去参加科学会议出差。 “我们需要提高知识水平,”老板说,“一个重要的密码学会议正在法国举行——他们在黎塞留时代就加密了,在韦塔时代就破解了其他人的密码。”
Vasya 很快发现他已经在某个地方看过所有卢浮宫的画作,甚至在老鼠把它从地毯上擦掉之前,埃菲尔铁塔的景象就已经让他厌烦了,我们为各种售货亭制作了这样的玻璃金字塔,可疑的餐馆。总而言之,巴黎根本就没什么可看的,也无处可钓,瓦夏只好去参加大会的报告。
其中一位演讲者,再次试图解开培根的密码,提出了一个假设,即通过分析培根作品中所有可能的子串,可以找到解开培根之谜的钥匙。 “可是他们太多了!”瓦夏大吃一惊。 “不,没那么多!” - 演讲者喊道, - “计算一下,你会亲眼看到的!”
当天晚上,瓦夏在网上找到了培根的全集。他编写了一个程序,将文本转换为一长行,从文本中删除所有空格和标点符号。而现在 Vasya 很疑惑——如何统计这个字符串的不同子串的个数? 

输入
输入包含 Vasya 接收到的非空字符串。该字符串仅包含小写拉丁字符。长度不超过2000个字符。 

输出
打印该字符串不同子串的个数。

 

例子
<头> <日># <正文>
输入 输出
1 阿巴 8