Pagini recente » Cod sursa (job #406264) | Cod sursa (job #419197) | Cod sursa (job #2124330) | Cod sursa (job #1430059) | Cod sursa (job #2896973)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
const int nmax = 1e6 + 5;
int t, process[nmax];
string s;
void resolve() {
int i = 1, len = 0;
int n = s.size();
while (i < n) {
if (s[i] == s[len]) {
++len;
process[i] = len;
++i;
}
else {
if (len)
len = process[len - 1];
else {
process[i] = 0;
++i;
}
}
}
}
int main()
{
fin >> t;
while(t--) {
fin >> s;
resolve();
int n = s.size(), maxi = 0, poz = 0;
for (int i = n - 1; i > 0; --i) {
if (process[i] == 0)
continue;
if ((i + 1) % (i + 1 - process[i]) == 0) {
maxi = i + 1;
break;
}
}
fout << maxi << '\n';
}
return 0;
}