Pagini recente » Cod sursa (job #970608) | Cod sursa (job #2420099) | Cod sursa (job #997912) | Cod sursa (job #668455) | Cod sursa (job #491074)
Cod sursa(job #491074)
#include <stdio.h>
#define LMAX 1000005
char A[LMAX];
int t,l,pi[LMAX],sol;
inline int cif(char x)
{
return x>='a' && x<='z';
}
void prefix()
{
int i,q=0;
for (i=2; i<=l; i++)
{
while (A[q+1]!=A[i] && q>0)
q=pi[q];
if (A[q+1]==A[i]) q++;
pi[i]=q;
if (i % (i-q)==0 && q>0)
sol=i;
}
}
int main()
{
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
scanf("%d\n",&t);
while (t--)
{
fgets(A+1,LMAX,stdin);
l=0; sol=0;
while (cif(A[l+1])) l++;
prefix();
printf("%d\n",sol);
}
return 0;
}