徐老师的弱循环节(cycle)
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
徐老师最近在学习 算法, 算法有一个经典的应用就是进行字符串匹配求一个字符串的循环节长度。
于是徐老师准备自己生成一些字符串当做测试数据,测试代码是否正确
他会先自己随机写一个仅包含大小写字母的字符串
然后用以下代码依次生成一个字符串序列
int n = S.size();
A[0] = "";
for (int i = 1; i <= n; ++i){
if (S[i - 1] >= 'A' && S[i - 1] <= 'Z'){
A[i] = A[i - 1] + char(S[i - 1] + 32);
} else {
A[i] = S[i - 1] + A[i - 1];
}
}
但是徐老师觉得求循环节太简单了,于是他设计了一个新的概念——弱循环节
对于一个字符串 来说,一个整数 如果满足对于任意 ,那么就认为 是 的一个弱循环节,一个字符串可能有多个弱循环节
例如 的弱循环节有两个,分别是 和
单纯求字符串的弱循环节也还是过于简单了
于是徐老师会给出一个序列 ,并给出 次询问
第 次询问徐老师会给出三个整数 ,你的任务是在 序列中找出一个 满足 且 是 的弱循环节,如果有多个满足条件的 请输出最小的 (数值最小而不是 最小)
输入格式
输入第一行包含一个字符串 ,保证仅由大小写字母组成
输入第二行包含一个整数 ,表示序列 的长度
输入第三行包含 个整数,分别表示
输入第四行包含一个整数 ,表示询问次数
接下来 行,每行包含三个整数 ,表示一次询问
输出格式
对于每次询问,输出一个整数,表示第 次询问的答案,如果不存在符合条件的 ,则输出 "No answer!"
数据范围
对于 的数据满足
对于另外 的数据满足
对于另外 的数据满足 序列单调不减
对于 的数据满足 ,
样例输入
AABAAba
9
4 3 2 1 7 5 3 6 1
6
1 4 4
2 1 4
2 1 3
3 3 5
5 4 7
7 8 9
样例输出
1
1
2
No answer!
3
6
样例解释
对于A序列分别为
A[1] = a
A[2] = aa
A[3] = aab
A[4] = aaba
A[5] = aabaa
A[6] = baabaa
A[7] = abaabaa
对于第一次询问,,所以满足条件的弱循环节长度为 对于第二次询问,,所以满足条件的弱循环节长度为 ,最小的是 对于第三次询问,满足条件的只有 ,所以答案是
冀公网安备13090002000383号