Pagini recente » Cod sursa (job #2386799) | Cod sursa (job #2410941) | Cod sursa (job #2744824) | Cod sursa (job #1202880) | Cod sursa (job #1005214)
#include<stdio.h>
#include<string.h>
#define NMAX 1000007
int x, n, T;
int pi[NMAX];
char a[NMAX];
void fa_x (char b[], int i)
{
while(x > 0 && b[x + 1] != b[i])
x = pi[x];
if(b[x + 1] == b[i])
++ x;
}
void KMP(char a[NMAX]){
memset(pi, 0, sizeof(pi));
for(int i = 2; i <= n; ++ i)
{
fa_x(a, i);
pi[i] = x;
}
}
int main(){
freopen("prefix.in", "r", stdin);
freopen("prefix.out", "w", stdout);
scanf("%d\n", &T);
for(; T > 0; -- T){
gets(a + 1);
n = strlen(a + 1);
x = 0;
KMP(a);
int poz = 0;
for(int i = n; i >= 1; -- i)
if(pi[i] && i % (i - pi[i]) == 0){
poz = i;
break;
}
printf("%d\n", poz);
}
}