Pagini recente » Cod sursa (job #251097) | Cod sursa (job #1201816) | Cod sursa (job #2441384) | Cod sursa (job #2791268) | Cod sursa (job #2647549)
#include <iostream>
#include <stdio.h>
#include <string.h>
#define NMAX 1000003
using namespace std;
int n,i,k,last,hmax,nr;
int urm[NMAX];
char v[NMAX];
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d",&n);
while(n--){
scanf("%s",v);
k=-1;
hmax=-1;
urm[0]=-1;
for(i=1;i<strlen(v);i++){
while(k>0 && v[k+1]!=v[i])
k=urm[k];
if(v[k+1]==v[i])
k++;
urm[i]=k;
if(urm[i]>=0 && (i+1)%(i-urm[i])==0)
hmax=i;
}
/*for(i=0;i<strlen(v);i++)
printf("%d ",urm[i]);
printf("\n");*/
printf("%d\n",hmax+1);
}
return 0;
}