3313:简单的碰撞

时间限制:2 S   /  内存限制:65536 KB
AC:11   /  Submit:27
问题描述

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

相关

2021-XCPC校选赛


Copyright 2016 - 2024 XUJC ACM Team
闽ICP备2020022076号-1