字符串哈希

成绩 0 开启时间 2013年02月21日 星期四 18:02
折扣 0.8 折扣时间 2013年02月28日 星期四 18:02
允许迟交 关闭时间 2013年02月28日 星期四 18:02
输入文件 stringhash.in 输出文件 stringhash.out

字符串哈希是一种非常好用的算法,它可以将一个字符串用一个整数来表示(尽管有时候会发生冲突),这是非常方便的.
现在小H拿着一些字符串来找你,希望你能帮她把这些字符串按照给定的规则转换成哈希值..

一个长度为n的字符串c1,c2,c3..cn-1,cn的哈希值=它的子串c1,c2,c3..cn-1的哈希值乘以一个常数Seed,再加上cn的ASCII值,
最后对一个整数2147483647求 “和” 运算的结果(“和”为位运算中的和,分别是Pascal中的and和C/C++中的&)
请注意,空串的哈希值为0

输入格式:
有N组数据
第一行是一个整数N
接下来有若干组数据,每个数据第一行是一个数len(len<=20),表示字符串的长度
下面一行有一个字符串和一个整数Seed,用一个空格隔开,字符串中只可能包含'a'..'z','1'..'9','A'..'Z'

输出格式:
共N行,每行一个整数即为对应数据的哈希值


样例输入:
1
6
yznJS1 131

样例输出:
1306619859


数据范围:
N<=10000
Seed<=131
其他如题。

 

by pom