Pagini recente » Cod sursa (job #298431) | Cod sursa (job #20890) | Cod sursa (job #2110968) | Cod sursa (job #420835) | Cod sursa (job #574983)
Cod sursa(job #574983)
#include <cstdio>
#include <cstring>
#define NMAX 1000050
char V[NMAX];
int pi[NMAX], lg, n, t, k, i;
int main () {
freopen ("prefix.in", "r", stdin);
freopen ("prefix.out", "w", stdout);
scanf ("%d\n", &t);
while (t--) {
scanf ("%s\n", V + 1); V[0] = ' ';
n = strlen (V) - 1; memset (pi, 0, sizeof (pi));
pi[1] = 0, k = 0, lg = 0;
for (i = 2; i <= n; i++) {
while (k > 0 && V[k+1] != V[i])
k = pi[k];
if (V[k+1] == V[i])
k++;
pi[i] = k;
if (k > 0 && !(i % (i-k))) lg = i;
}
printf ("%d\n", lg);
}
return 0;
}