Pagini recente » Cod sursa (job #2768133) | Cod sursa (job #1253594) | Cod sursa (job #2827611) | Cod sursa (job #1675801) | Cod sursa (job #2561534)
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
const int NMAX = 500005;
char s[NMAX];
int Pi[NMAX];
int main() {
freopen ("prefix.in", "r", stdin);
freopen ("prefix.out", "w", stdout);
int i, n, now, rez, q, j;
scanf ("%d", &q);
for (j = 1; j <= q; j++) {
scanf ("%s", s);
n = strlen(s);
for (i = n; i >= 1; i--)
s[i] = s[i - 1];
rez = 0;
for (i = 2; i <= n; i++) {
now = Pi[i - 1];
while (now > 0 && s[now + 1] != s[i])
now = Pi[now];
if (s[now + 1] == s[i])
now++;
Pi[i] = now;
if (Pi[i] != 0 && i % (i - Pi[i]) == 0)
rez = i;
}
printf ("%d\n", rez);
}
return 0;
}