Pagini recente » Cod sursa (job #3151524) | Cod sursa (job #34513) | Cod sursa (job #1582065) | Cod sursa (job #2307169) | Cod sursa (job #2561643)
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
const int NMAX = 1000005;
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;
}