Pagini recente » Cod sursa (job #1615163) | Cod sursa (job #1546583) | Cod sursa (job #2797833) | Cod sursa (job #745776) | Cod sursa (job #188337)
Cod sursa(job #188337)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100010
int t;
char s[MAX];
int pref[MAX],max;
void start(){
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d",&t);
}
void prefix(){
int x=0,i;
max=0;
pref[1]=0;
for(i=2;s[i];++i){
while(x>0 && (s[x+1]^s[i])!=0)
x=pref[x];
if(s[i]==s[x+1])
++x;
pref[i]=x;
if(pref[i]!=0){
if(pref[i]%(i-pref[i])==0)
max=i;
}
}
}
void print(){
printf("%d\n",max);
}
void end(){
fclose(stdin);
fclose(stdout);
exit(0);
}
int main(){
start();
while (t--){
gets(s);
prefix();
print();
}
end();
}