Pagini recente » Cod sursa (job #3253152) | Cod sursa (job #921239) | Cod sursa (job #2187228) | Cod sursa (job #2331704) | Cod sursa (job #317661)
Cod sursa(job #317661)
#include<stdio.h>
#include<string.h>
char a[10002];
int km[10002],n,i,m,max;
void prefix()
{ km[1]=0;
int k=0;
for(int q=2;q<=m;q++)
{ while(a[q]!=a[k+1]&&k>0)
k=km[k];
if(a[q]==a[k+1])
k++;
km[q]=k;
if(km[q]>0&&q%(q-k)==0&&q>max) max=q;
}
}
int main()
{freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{ max=0;
scanf("%s",a);
m=strlen(a)-1;
for(int j=m;j>=0;j--)
a[j+1]=a[j];
a[0]=' ';
m++;
prefix();
if(m>1)
printf("%d\n",max);
else printf("0\n");
}
return 0;}