| 问题描述 |
|---|
众所周知,字符串哈希是一种常用的快速字符串检索办法,但是哈希碰撞是不可避免的问题所在,因此给你一个字符串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 |
| 相关 |