Pagini recente » Rating Iulia Vidican (iulia200815) | Cod sursa (job #842337) | Cod sursa (job #664238) | Cod sursa (job #96366) | Cod sursa (job #1601596)
#include <fstream>
using namespace std;
const int LEN_MAX = 1e6;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
char a[LEN_MAX + 5];
int p[LEN_MAX + 5];
int Solve() {
fin.getline(a + 1, LEN_MAX + 2);
int i = 2;
for (int q = 0; a[i]; ++i) {
while (q > 0 && a[q + 1] != a[i])
q = p[q];
if (a[q + 1] == a[i])
++q;
p[i] = q;
}
--i;
while (i > 0 && (p[i] == 0 || p[i] % (i - p[i]) != 0))
--i;
return i;
}
int main() {
int T;
(fin >> T).ignore(1);
while (T--)
fout << Solve() << "\n";
return 0;
}