Pagini recente » Cod sursa (job #2710428) | Cod sursa (job #2830684) | Cod sursa (job #514418) | Cod sursa (job #301150) | Cod sursa (job #668963)
Cod sursa(job #668963)
#include <cstdio>
#include <cstring>
using namespace std;
#define lmax 1000005
char sir[lmax];
int urm[lmax];
int main()
{ int i,t,n,k,j,sol;
freopen("prefix.in","r",stdin); scanf("%d\n",&t);
freopen("prefix.out","w",stdout);
for(i=1;i<=t;++i)
{
gets(sir+1); sir[0]=' '; n=strlen(sir)-1;
urm[1]=0; k=0; sol=0;
for(j=2;j<=n;++j)
{
while(sir[k+1]!=sir[j]&&k>0)
k=urm[k];
if(sir[k+1]==sir[j])++k;
urm[j]=k;
if(j%(j-urm[j])==0&&urm[j]>0)sol=j;
}
printf("%d\n",sol);
}
fclose(stdin);
fclose(stdout);
return 0;
}