Pagini recente » Cod sursa (job #1804489) | Cod sursa (job #865092) | Cod sursa (job #1724861) | Cod sursa (job #2484789) | Cod sursa (job #163075)
Cod sursa(job #163075)
//infoarena - Prefix
#include <stdio.h>
#define INPUT "prefix.in"
#define OUTPUT "prefix.out"
#define LMAX 1000001
int N;
char A[LMAX];
int T[LMAX];
int prefix()
{
int i, k = -1;
T[0] = -1;
int max = 0;
for(i = 1; A[i]; ++i)
{
while(k >= 0 && A[i] != A[k+1])
k = T[k];
if(A[i] == A[k+1]) ++k;
T[i] = k;
if((T[i]>=0) && (i+1) % (i-T[i]) == 0) max = i+1;
}
return max;
}
int main()
{
freopen(INPUT, "r", stdin);
freopen(OUTPUT, "w", stdout);
scanf("%d", &N);
int i;
for(i = 1; i <= N; ++i)
{
scanf("%s\n", A);
printf("%d\n", prefix());
}
return 0;
}