Pagini recente » Cod sursa (job #3170914) | Cod sursa (job #352798) | 00998 | Cod sursa (job #1287631) | Cod sursa (job #370917)
Cod sursa(job #370917)
#include <stdio.h>
#define NMAX 1000005
char s[NMAX];
int pi[NMAX];
int prefix(){
int k = 0, sol = 0;
for(int i = 2; s[i]; ++i){
while(k && s[k+1] != s[i])
k = pi[k];
if(s[k+1] == s[i])
k++;
pi[i] = k;
if(k && i%(i-k) == 0)
sol = i;
}
return sol;
}
int main(){
freopen("prefix.in", "r", stdin);
freopen("prefix.out", "w", stdout);
int t;
scanf("%d\n", &t);
for(;t ; --t){
scanf("%s", s+1);
printf("%d\n", prefix());
}
return 0;
}