Pagini recente » Cod sursa (job #1886980) | Cod sursa (job #2640314) | Cod sursa (job #1736456) | Cod sursa (job #1229320) | Cod sursa (job #1716589)
#include <stdio.h>
#include <string.h>
#define lim 1000005
int pi[lim],n;
char v[lim],ch;
int prefix(){
int i,poz=0;
pi[1]=0;
for(i=2;i<=n;i++){
while(poz!=0&&v[poz+1]!=v[i])
poz=pi[poz];
if(v[poz+1]==v[i])
poz++;
pi[i]=poz;
}
i=n;
while((i>=1)&&((pi[i]==0)||(i%(i-pi[i])!=0)))
i--;
return i;
}
int main(){
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
int i,t,rasp;
scanf("%d%c",&t,&ch);
for(i=1;i<=t;i++){
gets(v+1);
n=strlen(v+1);
rasp=prefix();
printf("%d\n",rasp);
}
return 0;
}