Pagini recente » Cod sursa (job #154266) | Cod sursa (job #2301102) | Cod sursa (job #700324) | Cod sursa (job #947267) | Cod sursa (job #498476)
Cod sursa(job #498476)
#include<stdio.h>
#include<string.h>
int pi[ 1000010 ],i,j,k,l,m,n,lmax,oul;
char x[ 1000010 ];
void solve(){
pi[0] = pi[1] = 0;
lmax=0;
oul = 1;
int N = strlen(x+1);
int i;
int q=0;
for(i=2;i<=N;++i)
{while((q>0)&&(x[q+1]!=x[i]))
q=pi[q];
if(x[q+1]==x[i])q++;
pi[i]=q;
if(q &&(i %(i-q) == 0))
lmax = i;
}
}
void afis(){
printf("%d\n",lmax);
}
void citire(){
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d",&n);
for(i = 1 ; i <= n ; i++)
{scanf("%s",x+1);
solve();
afis();
}
}
int main(){
citire();
return 0;
}