问题描述 |
---|
众所周知,字符串哈希是一种常用的快速字符串检索办法,但是哈希碰撞是不可避免的问题所在,因此给你一个字符串s和模数p,请你找出一个与s同等哈希值同等长度但不等于s的字符串(保证结果一定存在,如果有多个请输出字典序最小的那个) 以下是哈希函数 typedef long long ll; ll shash(string s, ll p) { ll res = 0; for (int i = 0; i < s.length();i++) { res = res * 26 % p; res = (res + s[i] - 'a') % p; } return res; } |
输入描述 |
多组样例T(T <= 100) 每组样例输入一个字符串s(仅有小写字母组成)和正整数p s的长度不超过1e4,2 <= p <= 1e12 T组样例字符串长度之和不超过1e5 |
输出描述 |
针对每组样例输出一个符合答案的字符串并换行 |
样例输入复制样例 |
2 abc 100 gcd 10086 |
样例输出 |
aey vab |
提示说明 |
abc哈希后的值为(0*26*26+1*26+2)%100=28,aey哈希后的值为(0*26*26+4*26+24)%100=28 gcd哈希后的值为4111,vab哈希后的值也同样是4111 |
相关 |