Pagini recente » Cod sursa (job #2757988) | Cod sursa (job #326634) | Cod sursa (job #9758) | Cod sursa (job #1810115) | Cod sursa (job #219416)
Cod sursa(job #219416)
#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;
printf("%d\n", prefix());
}
return 0;
}