Pagini recente » Cod sursa (job #1155879) | Cod sursa (job #2783161) | Cod sursa (job #576350) | Cod sursa (job #184566) | Cod sursa (job #294906)
Cod sursa(job #294906)
#include <stdio.h>
#include <string.h>
int t;
char p[10000002];
long m;
void prefix()
{
long k,max;
long pre[1000002];
pre[1]=0; max=0; k=0;
for(long q=2;q<=m;q++)
{
while ( (k>0) && (p[k+1]!=p[q]) ) k=pre[k];
if (p[k+1]==p[q]) k++;
pre[q]=k;
if ( (k>0) && (q%(q-k)==0) && (q>max) ) max=q;
}
printf("%ld",max);
}
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d \n",&t);
for(int i=1;i<=t;i++)
{
scanf("%s",p);
m=strlen(p)-1;
for(long j=m;j>=0;j++) p[j+1]=p[j];
p[0]=' '; m++;
prefix();
}
}