Pagini recente » Cod sursa (job #2207818) | Cod sursa (job #2111734) | Cod sursa (job #619023) | Cod sursa (job #2206455) | Cod sursa (job #1004981)
#include<stdio.h>
#include<string.h>
char a[1000005];
unsigned a2[1000005];
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
unsigned n,i,j,q,t;
scanf("%u\n",&t);
for(q=1;q<=t;q++)
{
gets(a+1);
n=strlen(a+1);
a2[1]=j=0;
for(i=2;i<=n;i++)
{
while(a[j+1]!=a[i] && j>0)
{
j=a2[j];
}
if(a[j+1]==a[i])
j++;
a2[i]=j;
}
for(i=n;i>=1;i--)
if(i%(i-a2[i])==0 && a2[i]!=0)
{
printf("%u\n",i);
break;
}
if(i==0)
printf("0\n");
}
return 0;
}