Pagini recente » Cod sursa (job #843298) | Cod sursa (job #952319) | Cod sursa (job #504622) | Cod sursa (job #2962802) | Cod sursa (job #2647572)
#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=0;
hmax=-1;
for(i=1;i<strlen(v);i++){
while(k>0 && v[k]!=v[i])
k=urm[k-1];
if(v[k]==v[i])
k++;
urm[i]=k;
if(urm[i] && (i+1)%(i-urm[i]+1)==0)
hmax=i;
}
/*for(i=0;i<strlen(v);i++)
printf("%d ",urm[i]);
printf("\n");*/
printf("%d\n",hmax+1);
}
return 0;
}