Pagini recente » Cod sursa (job #2025619) | Cod sursa (job #2310852) | Cod sursa (job #2381724) | Cod sursa (job #347594) | Cod sursa (job #219417)
Cod sursa(job #219417)
#include <cstdio>
#include <cstring>
int n,t[1000001];
char a[1000001];
int prefix()
{
int k=-1;
t[0]=-1;
int max=0;
for(int i=1; a[i]; ++i)
{
while (k>=0 && a[i]!=a[k+1])
k=t[k];
if (a[i]==a[k+1])
++k;
t[i]=k;
if ((t[i]>=0) && (i+1)%(i-t[i])==0)
max=i+1;
}
return max;
}
int main()
{
freopen("prefix.in", "r", stdin);
freopen("prefix.out", "w", stdout);
scanf("%d", &n);
for(int i=1; i<=n; ++i)
{
//fgets(a,1000001,stdin);
//if (a[strlen(a)-1]=='\n')
//a[strlen(a)-1]=0;
scanf("%s\n",a);
printf("%d\n", prefix());
}
return 0;
}