Pagini recente » Cod sursa (job #2755256) | Cod sursa (job #2461216) | Cod sursa (job #2864462) | Cod sursa (job #2061970) | Cod sursa (job #2637378)
#include <fstream>
#include <iostream>
#define NMAX 1000001
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
char s[NMAX];
int p[NMAX];
void prefix() {
int res = 0;
p[0] = 0;
int i = 0, j = 1;
while (s[j] != '\0') {
if (s[i] == s[j]) {
++i;
p[j] = i;
++j;
if (i >= j / 2 && j % (j - i) == 0)
res = j;
}
else
if (i == 0) {
p[j] = 0;
++j;
}
else
i = p[i - 1];
}
fout << res << '\n';
}
int main() {
int t;
fin >> t;
while (t--) {
fin >> s;
prefix();
}
return 0;
}